CentOS grep 命令

grep 全称是 Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户,grep 命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来

常用选项:

-E :开启扩展(Extend)的正则表达式,使用 | 来分割多个pattern,以此实现OR操作

-i :忽略大小写(ignore case)

-v :反过来(invert),只打印没有匹配的,而匹配的反而不打印

-n :显示行号

-w :被匹配的文本只能是单词,而不能是单词中的某一部分

-c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到

-o :只显示被模式匹配到的字符串

-e :实现多个选项的匹配,逻辑or关系

--color :将匹配到的内容以颜色高亮显示。

-A n :显示匹配到的字符串所在的行及其后 n 行

-B n :显示匹配到的字符串所在的行及其前 n 行

-C n :显示匹配到的字符串所在的行及其前后各 n 行

正则表达式

通过一些特殊字符,来表示一类字符内容,然后交给前面的命令来执行;如果使用特殊字符本身的含义就需要‘\’进行转译。

1、字符匹配 . // 任意一个字符 [] // 匹配范围内的任意一个字符 [^] // 范围外任意一个字符 次数匹配 * // 匹配前面的字符0次到n次 \? // 匹配前面的字符0次到1次 \+ // 匹配前面字符1次到n次 \{m\} // 匹配前面的一个字符m次 \{m,n\} // 匹配前一个字符m到n次 \{0,n\} // 匹配前面的字符0次到n次(0必须加) \{m,\} // 匹配前面一个字符至少m次 位置锚钉 ^ // 锚定行首 $ // 锚定行尾 \b // 锚定词首或词尾(用在前面为词首,后面为词尾) \> // 锚定词尾 \< // 锚定词首 分组 特性: 默认情况下,Linux系统会为分组指定变量,变量的表示形式\1 \2 \3 ...(后向 引用) abc* // 我们把abc看成一个整体 \(\) // 将里面的看作是一个整体进行匹配 补充: 扩展正则表达式分组用"()"表示; 标准正则表达式中的"\"可以去掉;

grep 实例

cat test.txt abc aabc aaabbbc good alice # 查找文本中 包含 "a",2-3次行 grep 'a\{2,3\}' test.txt aabc aaabbbc # 查找文本中 以 "d" 结尾的行 grep "d$" test.txt good # 查找文本中 以 "a" 开头的行 cat test.txt | grep ^a abc aabc aaabbbc alice # 同时过滤空白行与注释行 cat test.txt | grep -v '^$' | grep -v '^#' # 显示不以 # 开头的行 cat test.txt | grep ^[^#]