warning:文中提到的选项如果posix未指定,会特殊说明。 多个关键字查找 . 关键字间 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 . 关键字间 and i. 通过管道 #同时包含'hello','world'的行echo hello world | grep '<hello>' | grep '<world>' ii. 通过正则 | grep -E 'pattern .*pattern |pattern .*pattern ' 如果包含个关键字还好,要是n个就有n!种可能! . 单词匹配i. -w(gnu 选项) grep -w 'main' /usr/include/*.h 这个-w很方便ii. <> grep '<main>' /usr/include/*.h .善用 -E -E选项启用 extended expression,正则写起来更加灵活#查看gcc帮助文件里两个the/that/and/or连在一起的行man gcc | grep -E '(<the>|<that>|<and>|<or>) ' man gcc | grep -E -w '(the|that|and|or) ' #查看gcc帮助文件里含两个连续单词的行man gcc | grep -E -w '([a-zA-Z]+) ' 使用-E让书写更方便,省去很多的,同时功能更强大。 忽略大小写 -i #查看INT_MAX的值grep -i 'int_max' /usr/include/limits.h -i与n同时使用的乱象#匹配连续相同单词echo 'it IT' | grep -i -w -E '([a-z]+) ' echo 'it IT' | grep -E -w '([a-zA-Z]+) ' 这是两个相同的单词吗?是的,因为告诉grep不计大小写的! 有的时候不要光图方便会不准确。 递归查找 -r(posix 未说明) #查看日志的错误信息grep -i -w -r -E 'error|failed|failure' /var/log |less 显示匹配行周围行 (posix 未说明) B/A/C(before/after/context -B n -A n -C n 取反-v grep -v -w 'hello' filename 如果没有取反,世界将不再美丽 匹配数 -c echo aaaa | grep -c 'a' 这个输出是!因为grep是行匹配的 输出文件名 -l grep -l -r -i -w 'filename_max' /usr/include/*.h 只输出匹配部分-o (gnu 选项) echo abcddf |grep -o 'dd' 可以用于验证自己写的正则 如果出现错误或不准确,感谢指出。
(以上内容不代表本站观点。) --------------------------------- |