Heim  >  Artikel  >  Datenbank  >  grep 技巧10则

grep 技巧10则

WBOY
WBOYOriginal
2016-06-07 15:30:071380Durchsuche

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 warning:文中提到的选项如果posix未指定,会特殊说明。 1 多个关键字查找 1.1 关键字间 or i. 使用-e #包含了string.h或者stdlib.h的头文件grep -l -e 'string\.h' -e 'stdlib\.h' /usr/include/*.h

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

  warning:文中提到的选项如果posix未指定,会特殊说明。

  1 多个关键字查找

  1.1 关键字间 or i. 使用-e

  #包含了string.h或者stdlib.h的头文件grep -l -e 'string\.h' -e 'stdlib\.h' /usr/include/*.h

  -e 选项还可以避免 关键字是-开头的导致选项解读失败。

  ii. 使用元字符 \|

  grep 'strint\.h\|stdlib\.h' /usr/include/*.h #使用-E 看着舒服grep -E 'string\.h|stdlig\.h' /usr/include/*.h

  iii. 使用-f file cat >multi_pattern stdlib\.h string\.h grep -l -f multi_pattern /usr/include/*.h

  1.2 关键字间 and i. 通过管道

  #同时包含'hello','world'的行echo hello world | grep '\' | grep '\'

  ii. 通过正则 |

  grep -E 'pattern1.*pattern2|pattern2.*pattern1'

  如果包含2个关键字还好,要是n个就有n!种可能!

  2. 单词匹配i. -w(gnu 选项)

  grep -w 'main' /usr/include/*.h

  这个-w很方便ii. \ grep '\

' /usr/include/*.h

  3.善用 -E -E选项启用 extended expression,正则写起来更加灵活#查看gcc帮助文件里两个the/that/and/or连在一起的行man gcc | grep -E '(\|\|\|\) \1' man gcc | grep -E -w '(the|that|and|or) \1' #查看gcc帮助文件里含两个连续单词的行man gcc | grep -E -w '([a-zA-Z]+) \1'

  使用-E让书写更方便,省去很多的\,同时功能更强大。

  4 忽略大小写 -i #查看INT_MAX的值grep -i 'int_max' /usr/include/limits.h

  -i与\n同时使用的乱象#匹配连续相同单词echo 'it IT' | grep -i -w -E '([a-z]+) \1' echo 'it IT' | grep -E -w '([a-zA-Z]+) \1'

  这是两个相同的单词吗?是的,因为告诉grep不计大小写的!

  有的时候不要光图方便会不准确。

  5 递归查找 -r(posix 未说明)

  #查看日志的错误信息grep -i -w -r -E 'error|failed|failure' /var/log |less

  6 显示匹配行周围行 (posix 未说明)

  B/A/C(before/after/context -B n -A n -C n

  7 取反-v grep -v -w 'hello' filename

  如果没有取反,世界将不再美丽

  8 匹配数 -c echo aaaa | grep -c 'a'

  这个输出是1!因为grep是行匹配的

  9 输出文件名 -l

  grep -l -r -i -w 'filename_max' /usr/include/*.h

  10 只输出匹配部分-o (gnu 选项)

  echo abcddf |grep -o 'dd'

  可以用于验证自己写的正则

  如果出现错误或不准确,感谢指出。

grep 技巧10则

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn