>  기사  >  데이터 베이스  >  grep 技巧10则

grep 技巧10则

WBOY
WBOY원래의
2016-06-07 15:30:071381검색

欢迎进入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则

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.