Linux之文本处理工具-grep与egrep

基本正则表达式




格式:grep [options] 'PATTERF' file

--color=auto 匹配到的选项带颜色显示
-q 静默模式,不输出任何信息
-v 匹配反向,显示不能被匹配到的行
-o 仅显示匹配到的选项,并不是显示正行
-i 匹配时忽略大小写
-E 使用扩展的正则表达式
-A NUM 显示匹配到行的后NUM行
-B NUM 显示匹配到行的前NUM行
-C NUM 显示匹配到行的前后各NUM行
-m # 匹配#次后停止
-n 显示匹配的行号
-w 匹配整个单词
-f file 根据模式文件处理
-c 统计匹配的行数
-e 实现多个选项间的逻辑or关系 例如:grep –e ‘cat ’ -e ‘dog’ file



元字符:

. 匹配任意单个字符
[] 匹配范围内的单个字符
[^] 匹配范围外的单个字符
[0-9] [:digit:] 数字
[a-z] [:lower:] 小写字母
[A-Z] [:upper:] 大写字母
[:alpha:] 大小写字母
[:alnum:] 大小写字母及数字
[:space:] 空格
[:punct:] 标点符号



匹配次数:

次数匹配:用来指定匹配其前面的字符的次数
贪婪模式:尽可能的长的去匹配字符:
* 例子:x*y
xxy xy y 都能匹配
.* 匹配任意长度任意字符
\? 匹配其前字符0次或者1次
\+ 匹配其前字符至少1次
\{m\}:匹配m次
\{m,\n}:至少m次,至多n次
\{m,\}:至少m次
\{0,\n}:至多n次



位置锚定:

用于指定字符出现的位置
^:锚定行首 ^Char
$:锚定行尾 grepchar$
^$:空白行
单词的位置锚定
\<char :锚定词首,\bchar

char\> : 锚定词尾,char\b



分组:

\ (\)
\(ab\)*xy
\|:或者,ac\|bc ac或者bc



引用:

\1:后向引用,引用前面的第一个左括号以及与之对应的右括号中的模式匹配到的内容,意思是说前面出现一次,在\1这也要出现一次



练习:


1、显示/proc/meminfo文件中的以大小写s的开头的行
Linux之文本处理工具-grep与egrep
2、取出默认shell为非bash的用户
Linux之文本处理工具-grep与egrep
3、取出默认shell为bash的且其ID号最大的用户
Linux之文本处理工具-grep与egrep
4、显示/etc/grub2.cfg文件中,以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行
Linux之文本处理工具-grep与egrep
5、显示/boot/grub/grub.conf中以至少一个空白字符的行
Linux之文本处理工具-grep与egrep
6、查出/etc/passwd中一位数或两位数
Linux之文本处理工具-grep与egrep
7、找出ifconfig命令结果中的1到255之间的整数
Linux之文本处理工具-grep与egrep
9、添加用户bash和testbash,而后找出当前系统上于其他用户名和默认shell相同的用户
Linux之文本处理工具-grep与egrep
Linux之文本处理工具-grep与egrep
Linux之文本处理工具-grep与egrep
10、找出netstat -tan命令执行的结果中以“LISTEN”或“ESTABLISHEN”结尾的行
Linux之文本处理工具-grep与egrep
Linux之文本处理工具-grep与egrep
11、取出当前系统上所有用户的shell,要求:每种shell中显示一次,且升序排序显示
Linux之文本处理工具-grep与egrep
12、扫描172.18.120.0/24⽹段,显⽰在线的ip地址
[root@Centos7 ~]# nmap -sP 172.18.120.0/24 | grep -B1 'Host is up'| grep for | cut -d" " -f5 172.18.120.7
172.18.120.17
172.18.120.27
172.18.120.254
13.显⽰/root/passwd⽂件中,包含root字串或包含nologin字串的⾏
Linux之文本处理工具-grep与egrep
Linux之文本处理工具-grep与egrep
14.匹配root整个单词
Linux之文本处理工具-grep与egrep
15.过滤ipconfig命令输出的所有ip地址
Linux之文本处理工具-grep与egrep
16.找出/etc/rc.d/init.d/functions⽂件中⾏⾸为某单词(包括下划线)后⾯跟⼀个⼩括号的⾏
Linux之文本处理工具-grep与egrep
17.将此字符串:welcome to magedu linux 中的每个字符去重并排序,重复次数多的排到前⾯
Linux之文本处理工具-grep与egrep



扩展正则表达式


egrep:使用扩展正则表达式来构建模式,相当于 grep -E

元字符:同正则表达式,位置牟定同正则表达式


字符匹配:

.:任意单个字符
[]:指定范围内的任意单个字符
[^]:指定范围外的任意单个字符



次数匹配

*:匹配器前面的字符任意次
?:匹配器前面的字符0或1次
+:匹配其前面字符至少一次
{m}:匹配其前面字符m次
{m,n}:至少m次,至多n次
{m,}:至少m次
{0,n}:只读n次



分组:

():分组
|:或者,ac|bc ac或者bc

转载于:https://blog.51cto.com/5033330/2364672

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值