ca888会员登录grep用法

2019-05-06 01:15栏目:编程程序

re.S,使 '.'  相称换行在内的兼具字符

grep :
 功效:用于过滤/找寻的特定字符。可选取正则表达式能种种发令协作使用,使用上尤其灵活
 参数:-a --text #毫比一点都不大要2进制的多少。
  -c --count #总结符合样式的列数。
  -i --ignore-case #马虎字符大小写的反差。 
  -v --revert-match #来得不带有相称文本的保有行。
  -n --line-number #在突显符合样式的那1行在此以前,标示出该行的列数编号。

一、grep工具

第三用来检索文件的具体内容
语法格式:grep -[acinv] '相配字符串' filename

  • --color 参数能够将追寻的关键字以颜色显示
  • a 以文件文件方式寻找
  • c 总括找到的符合行的次数
  • i 忽略大小写
  • n 顺便输出游号
  • v 反向选取,即展现不分包相配文本的具备行
  • h 查询多文件时不展现文件名。
  • l 查询多文本时只输出包罗相配字符的文书名。
  • s 不显得不存在或无般配文本的错误音信。
    grep命令加- E参数,那1增添允许采纳扩大情势相配
  • A看匹配行的后几行
  • B看相称行的前几行
  • C看般配行的光景几行
    A B参数一般用于查看错误日子如:grep --color -A 3 -B 3 "error" /var/log/messages
    C参数如:grep --color -C 3 "error" /var/log/messages
#先grep匹配再用awk打印第2个域
[root@localhost sh]# ifconfig |grep "Bcast"|awk '{print $2}'
addr:192.168.15.172
#cut命令d参数以冒号:切割,f参数打印第2个域
[root@localhost sh]# ifconfig |grep "Bcast"|awk '{print $2}'|cut -d : -f2
192.168.15.172
#判断某些字符出现在文件中的次数
[root@localhost sh]# grep -c "www" ip_list                                  
2
#扫描当前目录(包括子目录)下所有文件匹配IP并打印文件名,r是递归,a是文件形式扫描,E是扩展用于正则匹配IP
[root@localhost data]# grep --color -raE "([0-9]{1,3}.){3}[0-9]{1,3}" *
sh/ip_list:192.168.15.110 /var/www/html1 /data/www/html1
sh/ip_list:192.168.15.210  /var/www/html2 /data/www/html2
sh/ip_list:192.168.15.14

 

>>> pattern=r'ghostwu.com'
>>> import re
>>> re.findall( pattern, 'ghostwuacom' )
['ghostwuacom']
>>> re.findall( pattern, 'ghostwubcom' ) 
['ghostwubcom']
>>> re.findall( pattern, 'ghostwu.com' ) 
['ghostwu.com']
>>> re.findall( pattern, 'ghostwuncom' ) 
[]
>>> re.findall( pattern, 'ghostwuncom', re.S )
['ghostwuncom']
>>> 

 规则表明式:^ #锚定行的初步 如:'^grep'相配全部以grep开始的行。 
  $ #锚定行的收尾 如:'grep$'匹配全体以grep结尾的行。 
  . #同盟3个非换行符的字符 如:'gr.p'相配gr后接一个随便字符,然后是p。 
  * #卓殊零个或四个先前字符 如:'*grep'匹配全部三个或多少个空格后紧跟grep的行。 
  .* #一齐用代表专擅字符。 
  [] #相称二个钦命范围内的字符,如'[Gg]rep'匹配Grep和grep。 
  [^] #相称1个不在内定范围内的字符,如:'[^A-FH-Z]rep'相配不包涵A-纳瓦拉和T-Z的3个假名早先,紧跟rep的行。 
  (..) #标识相称字符,如'(love)',love被标识为1。 
  < #锚定单词的发端,如:'<grep'相称包蕴以grep开首的单词的行。 
  > #锚定单词的终结,如'grep>'相称包括以grep结尾的单词的行。 
  x{m} #再也字符x,m次,如:'0{5}'相称包含四个o的行。 
  x{m,} #双重字符x,至少m次,如:'o{5,}'相配至少有四个o的行。 
  x{m,n} #重复字符x,至少m次,不多于n次,如:'o{5,10}'匹配5--10个o的行。 
  w #分外文字和数字字符,也正是[A-Za-z0-9],如:'Gw*p'相称以G后跟零个或多个文字或数字字符,然后是p。 
  W #w的反置方式,相称2个或五个非单词字符,如点号句号等。 
  b #单词锁定符,如: 'bgrepb'只匹配grep。
 语法: grep '^string' file
  grep 'string$' file
  grep -c 'string' file

二、正则表达式
  • ^以xx字符起先
  • $以xx字符结尾
  • .相配二个非换行符的字符,即表示私下字符
  • 相称零个或八个先前字符 如:'grep'相称全数3个或多少个空格后紧跟grep的行
  • .*一道用代表私自字符
  • [] 相称3个内定范围内的字符,如'[Gg]rep'匹配Grep和grep
  • [^] 匹配2个不在钦点范围内的字符,如:'[^A-FH-Z]rep'相配不带有A-Odyssey和T-Z的3个假名开始,紧跟rep的行
  • /< 锚定单词的开首,
  • /> 锚定单词的终止,如'grep/>'相称包含以grep结尾的单词的行。
    /<abc/> 严谨相称单词abc
  • x/{m/} 重复字符x,m次,如:'o/{5/}'相配包括多少个o的行。 x/{m,/} 重复字符x,至少m次,如:'o/{5,/}'匹配至少有四个o的行。
  • x/{m,n/} 重复字符x,至少m次,不多于n次,如:'o/{5,拾/}'相配5--10个o的行
#[0-9]匹配数字、[^0-9]匹配所有的非数字字符、[a-z]匹配小写、[A-Z]匹配大写、[Aa-Zz]大小写一起匹配,一个中括号只针对一个字符匹配,匹配几次就要几个[],重复的可以如下
#匹配以任意小写字母开头3次的行,可以用扩展参数E或者{3}
[root@localhost sh]# grep -E --color "[^a-z]{3}"  text.txt
[root@localhost sh]# grep  --color "[^a-z]{3}"  text.txt
#匹配次数3到4次
[root@localhost sh]# grep -E --color "[^a-z]{3,4}"  text.txt
#匹配IP
[root@localhost sh]# grep -E --color "([0-9]{1,3}.){3}[0-9]{1,3}" ip_list
192.168.15.110 /var/www/html1 /data/www/html1
192.168.15.210  /var/www/html2 /data/www/html2
192.168.15.14
#([0-9]{1,3}.){3}表示匹配3次3位数xxx.
#[0-9]{1,3}表示匹配字符范围在0-9之间,匹配1到3次,点.表示任意字符需要转义

-?

re.M,多行相称,主要影响( ^和$ )

 

 

>>> str="""
... hi,ghostwu,how are you
... ghostwu: my name is ghostwu,how are you
... ghostwu: nice to meet you
... hello ghostwu
... """
>>> pattern = r"^ghostwu"
>>> re.findall( pattern, str )
[]
>>> re.findall( pattern, str, re.M )
['ghostwu', 'ghostwu']
>>> 

并且展示相配行上下的?行,如:grep -二 pattern filename同时出示匹配行的光景二行。

当正则有多行的时候,能够打开verbose格局re.X

 

>>> pattern=r"""
... d{3,4}
... -?
... d{8}
... """
>>> str="020-88888888"
>>> re.findall( pattern, str )
[]
>>> re.findall( pattern, str, re.X )
['020-88888888']
>>> 

-a, --text

():分组与|  的选拔,  假如大家要协作三个.com,.cn,.net结尾的email

 

>>> pattern=r"w @w (.com|.cn|.net)"
>>> email="abc@qq.com">>> re.match( pattern, email )
<_sre.SRE_Match object at 0x7f2b74481828>
>>> re.match( pattern, 'abc@qq.cn' )
<_sre.SRE_Match object at 0x7f2b744818a0>
>>> re.match( pattern, 'abc@qq.net' )
<_sre.SRE_Match object at 0x7f2b74481828>
>>> re.match( pattern, 'abc@qq.io' )
>>> 

也正是于相配text,用于(Binary file (standard input) matches)报错

非凡超链接

 

>>> html="""
... <a href="http://www.baidu.com">百度</a>
... <a href="index.html">首页</a>
... <p>这是一段说明</p>
... <a href="http://www.taobao.com">淘宝</a>
... """
>>> re=r"href="(. ?)""
>>> pattern=r"href="(. ?)""
>>> re
'href=\"(. ?)\"'
>>> import re
>>> re.findall( pattern, html )
['http://www.baidu.com', 'index.html', 'http://www.taobao.com']
>>> 

-b,--byte-offset

 

 

打印相配行前边打字与印刷该行所在的块号码。

 

-c,--count

 

只打印相配的行数,不显得相称的原委。

 

版权声明:本文由ca888发布于编程程序,转载请注明出处:ca888会员登录grep用法