含义、功能:
grep(global regular expression print,全局正则表达式输出)的搜索工具,当命令匹配到执行命令时指定的模式时,grep会将包含模式的一行输出,但是并不对原文件内容进行修改。
grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。
常用参数:
-v --revert-match #显示不包含匹配文本的所有行。
-E --extended-regexp #将样式为延伸的普通表示法来使用。
-o #仅打印出匹配的一段,而非整行
-n #打印出匹配行的行号
-l #仅打印出匹配行所在的文件
-c #打印出每个文件中匹配行的总数
匹配常用模式:
^hello #与以字串hello起始的行匹配
hello$ #与以字串hello结束的行匹配
\d #匹配一个数字字符.<=> 等价于 [0-9]
\D #匹配一个非数字符. 等价于 [^0-9]
\w #等价于 "[A-Za-z0-9_]"
\W #匹配任何非单词字符,等价于 "[^A-Za-z0-9]"
\s #匹配任何空白字符, 包括空格 制表符 换页符 等等. 等价于[\f\n\r\t\v]
\S #匹配任何非空白字符. 等价于 [^\f\r\n\t\v]
\b #匹配一个单词边界,也就是指单词和空格间的位置。
\B #匹配非单词边界。
grep后面一次跟随多个模块的时候需要将模块联系起来:
\| #grep 'pattern1\|pattern2' filename(a)
grep -E #代表扩展的正则表达式. 若使用-E选项,则可以去掉转义字符'\',直接使用'|'
$ $grep -E 'pattern1|pattern2' filename #等同于(a)