Linux 中的 grep 命令详解

679 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

Linux的grep命令是一种强大的文本搜索工具,用于查找文件里符合条件的字符串,可以根据用户指定的“模式”对文本逐行进行匹配检查,打印匹配到的行。

grep命令

语法格式

grep [options][pattern][file]

参数选项

[options]主要参数:

  • -A <显示行数>:显示符合条件的行及该行之后指定行数的内容
  • -B <显示行数>:显示符合条件的行及该行之前指定行数的内容
  • -C <显示行数>:显示符合条件的行及该行之前后指定行数的内容
  • -c:输出匹配行的计数
  • -e <范本样式>: 指定字符串做为查找文件内容的样式
  • -E:将样式为延伸的正则表达式来使用
  • -h:查询多文件时不显示文件名
  • -i:不区分大小写
  • -l:查询多文件时只输出包含匹配字符的文件名
  • -n:显示匹配行及行号
  • -o:仅显示匹配到的字符串
  • -s:不显示不存在或无匹配文本的错误信息
  • -v:显示不包含匹配文本的所有行

pattern正则表达式

特殊字符:

  • . :匹配任意单个字符
  • * :匹配前面的字符任意次
  • \ :转义字符,忽略正则表达式中特殊字符的原有含义
  • ^ :匹配正则表达式的开始行
  • $ : 匹配正则表达式的结束行
  • \< :从匹配正则表达式的行开始
  • \> :到匹配正则表达式的行结束
  • [] :匹配单个字符,如[A]即A符合要求
  • [ - ] :范围,如[A-Z],即A、B、C一直到Z都符合要求

范围:

  • .*:任意长度的任意字符
  • ?:匹配其前面的字符0或1次
  • +:匹配其前面的字符至少1次
  • {}{m}{m,n}{m,}{,n}分别为匹配前面的字符m次、m到n次、至少m次、至多n次

egrep 和 fgrep

egrep命令

egrep等价于grep -E

fgrep命令

fgrep不支持正则表达式搜索,不够灵活,但是查询速度比grep命令快,想找什么跟什么就可以。

例如,在test.txt文件中搜索字符串"tigeriaf":

fgrep tigeriaf test.txt

原创不易,如果小伙伴们觉得有帮助,麻烦点个赞再走呗~

最后,感谢女朋友在工作和生活中的包容、理解与支持 !