【Linux三剑客】实用主义之grep

编程探索课程 2024-04-17 08:50:46
1、什么是grep

在 Linux 操作系统中,"grep"命令是一种强大而常用的文本搜索工具。它用于在文件中查找特定的模式,并显示包含该模式的行。"grep"命令不仅可以搜索文件内容,还可以结合各种选项和正则表达式,提供丰富的搜索功能。

在远古时代,计算资源是极其有限的,内存大概只有32KB、64KB 这个级别,disk 也只有几M。这使得软件设计不得不极其简单,unix 有一款文字编辑器,叫做 ed,作者是大名鼎鼎的 Ken Thompson。

ed 的指令都只有一个字符,如 p(print)、s(delete)、s(substitute)、a(append)、r(read)、w(write)。ed 强大的地方在于,可以简单的操作多行,如 1,10p 表示打印1-10行,1,$p 表示打印所有行,$d 表示删除最后一行。但是还有一个问题,内存是非常小的,可能装不下整个文件。

logo

当时还有一位叫做 Lee E. McMahon 的计算机科学家从事 text analysis 方向的工作。他想通过 text analysis 的手段研究一下,The Federalist Papers(联邦党人文集,作者有很多很多人,很多学者想找出是谁写了哪一部分)的作者情况。The Federalist Papers 一共有85篇,加起来也就1M 左右,但是,ed 装不下。

于是 Lee 把这个问题向 Ken Thompson 反应了,于是第二天,Ken Thompson 对 ed 的源码做了些修改,开发出了 grep,能够实现从多个文件中查找满足特定正则表达式的字符串。ed 中有一个指令,叫做 g,是 global 单词的缩写,可以和其他指令结合使用,比如 g/print/p 打印后面所有保护 print 的行。所以 Ken Thompson 把这个程序命名为 grep。

2、grep使用技巧

以下是一些 grep 的使用技巧:

使用正则表达式进行精确搜索:可以使用正则表达式来定义更复杂的搜索模式。 结合管道符使用:与其他命令结合使用,如 `ls -l | grep filename` 。 使用 `-v` 选项进行反向搜索:找到不包含特定模式的行。 使用 `-r` 选项递归搜索目录:在整个目录结构中查找。 使用 `-n` 选项显示行号:方便定位。 使用 `-c` 选项统计匹配的行数。 使用 `-i` 选项忽略大小写。 使用 `-A` 或 `-B` 选项显示匹配行前后的行数。 使用 `-e` 选项指定多个搜索模式。 使用 `-f` 选项从文件中读取搜索模式。 使用 `--color=auto` 使匹配的行以不同颜色显示,提高可读性。 结合通配符进行模糊搜索。 使用 `--include=pattern` 和 `--exclude=pattern` 来包含或排除特定模式的文件。 使用 `--line-number` 或 `--with-filename` 显示行号和文件名。 在大型文件中,可以使用 `head` 和 `tail` 命令与 `grep` 结合使用,只查看部分结果。3、grep语法介绍

grep usage

通配符正则

字符位数限定

特定类型字符过滤

字符过滤正则

位置正则

未完待续,喜欢的点个关注 谢谢。

创作不易 点个关注 谢谢

0 阅读:1

编程探索课程

简介:感谢大家的关注