grep

2018-06-21 08:35:15来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

grep awk sed支持正则表达式
正则表达式的文法分为3种标准: BRE 、ERE 和 ARE

 -------------- ERE

grep -E或者egrep
? - 最多一次匹配(零次或一次匹配)。
+ - 至少一次匹配(一次或更多次匹配)。
.
|
() : 表示分组,或者


使用这两种语法符号时,不在需要添加转义符。
ERE 取消了子表达式 "()" 和 次数匹配 "{m,n}" 语法符号的转义符引用语法,在
与此同时, ERE 也取消了非正则语义的子表达式向前引用能力。

--------------ARE : 高级正则表达式
非贪婪匹配 : ARE才支付
.*?


--------------BRE

grep pattern [file...]
(1)grep 搜索字符串 [filename]
(2)grep 正则表达式 [filename]

在文件中搜索所有 pattern 出现的位置, pattern 既可以是要搜索的字符串,也可以是一个正则表达式.
注意:在输入要搜索的字符串时最好使用双引号/而在模式匹配使用正则表达式时,注意使用单引号
为了避免shell的元字符对正则表达式的影响,请用单引号('')括起来,千万不要用双引号括起来("”)或者不括起来。

BRE 定义的语法符号包括:

. - 匹配任意一个字符。
[] - 字符集匹配,匹配方括号中定义的字符集之一。
[^] - 字符集否定匹配,匹配没有在方括号中定义的字符。
^ - 匹配开始位置。
$ - 匹配结束位置。
\(\) - 定义子表达式。
\n - 子表达式向前引用,n 为 1-9 之间的数字。 由于此功能已超出正则语义,需要在字符串中回溯,因此需要使用 NFA 算法进行匹配。
* - 任意次匹配(零次或多次匹配)。
\{m,n\} - 至少 m 次,至多 n 次匹配;\{m\} 表示 m 次精确匹配;\{m,\} 表示至少 m次匹配。
--------------------------------------------------------


grep ‘[a-z]\{5\}’ aa
显示所有包含每个字符串至少有5个连续小写字符的字符串的行。

 

一次搜索多个文件:
$ grep magic /usr/src/Linux/Doc/*

 


-n:显示匹配行及 行号。
-c :打印匹配的行数 。 只输出匹配行的计数。??


\< 和 \> 分别标注单词的开始与结尾。

 

[:space:] 等价于 [\t\r\f\v\n]

 

-----
待验收:
grep '[bB]' :搜B大小写
行匹配:输出匹配行的计数
grep -c "48" data.doc #输出文档中含有48字符的行数
显示匹配行和行数
grep -n "48" data.doc #显示所有匹配48的行和行号
--color:以特定颜色高亮显示匹配关键字
–color选项是个非常好的选项,可以让你清楚的明白匹配了那些字符。最好在自己的.bashrc或者.bash_profile文件中加入:
alias grep=grep --color=auto

-------------
待验证:
. - 匹配任意一个字符。 包括换号符号????


(egrep???)
搜跨一行内容:
grep 'XXX[^\n]+\YYY'
grep 'XXX.*?\nYYY' 要切换到 ARE
搜跨3行内容:
grep ‘XXX([^\n]+\n){3}YYY’
-------------
更多的选项请查看:man grep
多个选项,直接用空格分开
grep -A3 -n zhangy

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:32位Linux设置超大Oracle SGA的分析

下一篇:Linux平台网络配置-----C语言