正则表达式-grep命令
admin
2023-07-29 03:40:07
0

1. 基本的正则表达式  grep 

^a      表示匹配以a开头的行; 

a$ 表示匹配以a结尾的行; 

^$ 表示空白行; 

. 表示匹配任意一位字符; 

* 表示匹配其前面字符的任意次(可以是0次); 

.* 表示匹配任意字符任意次; 

\?     表示匹配前面字符1次或0次; 

a\{3,5\}表示匹配前面字符的至少3次,最多5次;   

[a-z]   表示匹配任意一个字母; 

[a-Z]   表示匹配任意一个字母(不区分大小写); 

[1-9] 表示匹配任意数字; 

[^1-9]  表示匹配不是数字; 

[a-Z0-9]表示匹配数字和所有字母;   

[[:alnum:]] 表示匹配数字和所有字母;

[[:space:]] 表示匹配空格; 

[[:punct:]] 表示匹配标点符号

\<或\b 表示匹配<符号后面的单词,必须做为首部出现  比如  \

\>或\b  表示匹配>符号前面的单词,必须做为尾部出现  比如   abc\>


\( \)   表示分组  一般和后向引用合用;

后向引用

    \1  引用前面第一个分组

    \2  引用前面第二个分组

    \3  引用前面第三个分组

[root@server0 ~]# grep "\(a\)\(b\)c\1xc\1\2c" test.txt

abcaxcabc


2. 扩展的正则表达   egrep或grep -E

+ 表示匹配前面字符至少1次; 

? 表示匹配前面字符1次或0次;

{} 表示匹配前面字符的多少次; 

()      表示分组

|       表示或者


3.grep命令 

-i     不区分大小写

-v     取反

        -o     显示字符串本身

        -n     输出时显示行号

        -E     支持扩展正则表达式    等效 egrep 

        -A     显示匹配字符的之后N行

        -B     显示匹配字符的之前N行

-C     显示匹配字符的前后N行

        -r     递归匹配全部文件 


4.基本正则表达式应用举例

1) 查询/var/log/message文件中包含kernel的信息

[root@server0 ~]# grep kernel /var/log/messages


2) 查询/etc/passwd文件中以root开头的行

[root@server0 ~]# grep "^root" /etc/passwd

root:x:0:0:root:/root:/bin/bash


3) 查询/etc/passwd文件中以nologin结尾的行,并计算行数

[root@server0 ~]# grep "nologin$" /etc/passwd


4) 查询/usr/share/dict/words 文件中以a或b开头的行

[root@server0 ~]# grep "^[a,b]" /usr/share/dict/words 


5) 查询/usr/share/dict/words文件中以不以 c,d,e,f(忽略大小写)开头的行,并计算行数

[root@server0 ~]# grep "^[^c-f]" /usr/share/dict/words | wc -l 


6) 在/etc/passwd中选出所有不包含nologin 的行。

[root@server0 ~]# grep -v "nologin" /etc/passwd


7) 查询/usr/share/dict/words文件中以a开头且第三个字符是z的行

[root@server0 ~]# grep "^a.z" /usr/share/dict/words


8)查询/usr/share/dict/words文件中以a开头且后面跟随5个字符的行

[root@server0 ~]# grep "^a.\{5\}$" /usr/share/dict/words 


9)查询你的系统的CPU有几个核

[root@server0 ~]# grep "processor" /proc/cpuinfo  | wc -l


10) 查询/usr/share/dict/words文件中总共10位,且以z结尾的行。

[root@server0 ~]# grep "^.\{9\}z$" /usr/share/dict/words 


11) 查询/usr/share/dict/words文件中以 a,b,c开头,且第5位只能为s的行

[root@server0 ~]# grep "^[a,b,c]...s" /usr/share/dict/words 


12) 查询/usr/share/dict/words文件中所有以两位数字开头的行

[root@server0 ~]# grep "^[1-9][1-9]" /usr/share/dict/words 


13) 查询/usr/share/dict/words文件中以a,b,c开头的且不以a,b,c结尾行

[root@server0 ~]# grep "^[a,b,c].*[^a,b,c]$" /usr/share/dict/words 


14)查询/usr/share/dict/words文件中以小写字母开头,以大写字母结尾的行

[root@server0 ~]# grep "^[a-z].*[A-Z]$" /usr/share/dict/words


5.扩展正则表达式

1)去除a.txt 空白行与#开头的行

[root@server0 ~]# egrep -v "^$|^#" a.txt

 

2)搜索god good goood等字符串

[root@server0 ~]# egrep "go{1,3}d" a.txt


3)搜索gd 或者 god字符串的行

[root@server0 ~]# egrep "go?d" a.txt


相关内容

热门资讯

热浪期间,法国家中死亡人数激增... 6月18日,在法国巴黎,人们在圣马丁运河水域消暑。新华社发上个月,欧洲遭遇了史上罕见的热浪袭击。根据...
日印各有所求,专家:双方的目标... 如何分析高市早苗此次访问中日印双方展现出的态度?两国关系可能面临哪些变量?凤凰卫视连线上海国际问题研...
二七区开展胡大白先进事迹专题宣... 7月1日,二七区邀请我校马克思主义学院党委副书记、工会主席韩树栋走进区委党校,开展胡大白董事长先进事...
台媒:谷立言与特朗普立场渐行渐... 前不久,台湾《中国时报》刊发社论指出,“美国在台协会”台北办事处处长谷立言对民进党“新两国论”几乎照...
中国共产党党员队伍稳步壮大 组... 党员10128.6万名 基层党组织543.1万个中国共产党党员队伍稳步壮大 组织体系日趋严密新华社北...
演上了!美议员当众举起手机:去... 据美国印度战略伙伴关系论坛(USISPF)近日发布的一段视频,美国共和党联邦参议员史蒂夫·戴恩斯在一...
15岁少年在家中和同学饮酒后裸... 早前报道:15岁少年家中和同学饮酒后身亡,全身赤裸,屋内有火烧痕迹大象新闻(2026年7月3日)端午...
3秒钟,差点毁了韩红基金会 图为韩红/图源:@韩红工作室韩红,最近有点麻烦。先是为冯小刚新片《抓特务》宣传,一句“走面儿”引发大...
聚焦四个主攻方向!重庆持续布局... ‍‍据《重庆日报》报道,7月2日上午,三峡实验室在两江新区揭牌。三峡实验室由重庆市政府与中国科学院联...
台“中选会”人事案再遭否决,蓝... 海峡导报综合报道 台“中选会委员”名额尚未达到规定最低人数,台民意机构3日针对台当局行政机构补提的3...