linux文本处理三剑客之grep

GREP其实 grep 是一段话的缩写:Global search regular expression and printout the line(全面搜索研究正则表达式并显示出来)
作用:grep 命令是一种强大的文本搜索工具,根据用户指定的“模式”对目标文本进行匹配检查,打印匹配到的行。

基本正则表达式

 grep -i "^root" file                    ###以root开头,i(ignore-case):忽略大小写
 grep -i "root$" file                    ###以root结尾
 grep "^$" file                          ###过滤出空行,cat -E file可以发现文件的结尾都有$
 grep  "root" -r /mnt/                   ###显示/mnt/下文件中有root的行
 grep -n "root" file                     ###显示行号
 grep -A 1 "root" file                   ###显示file中root的后一行,A(after)
 grep -B 1 "root" file                   ###显示file中root的前一行,B(before)

 grep "[abc]" file                       ###匹配里面任意一个字符
 grep "[^abc]" file                      ###匹配不包含^后面的一个字符的内容(非a,b,c)

 grep "\<abc" file                       ###abcd会被过滤出来(相当于^abc开头的字符)
 grep "abc\>" file                       ###aabc会被过滤出来(相当于abc$结尾的字符)
 grep "\<abc\>" file                     ###显示出包含abc的内容(abcd:这种就会过滤不出来)

 grep "n.m" file                         ###代表一个字符
 grep "n*m" file                         ###重复0个或多个前面的字符

 grep "\babc\b" file                     ###只要abc
 grep [[:alpha:]] file                   ###匹配单个字母
 grep [[:lower:]] file                   ###匹配单个小写字母
 grep [[:upper:]] file                   ###匹配单个大写字母
 grep [[:digit:]] file                   ###匹配单个数字
 grep [[:alnum:]] file                   ###匹配单个数字或字母
 grep [[:punct:]] file                   ###匹配单个符号
 grep [[:space:]] file                   ###匹配单个空格

扩展正则表达式

 egrep -n "a?c" file                     ###n(number):显示行号?:重复0个或一个字符
 egrep "a+c" file                        ###+:重复前面一个或一个以上的前面字符
 egrep "a{n,m}" file                     ###重复前一个字符n-m次
 grep "a\{n,\}" file                     ###重复前一个字符至少n次(n-无穷)未加-E及扩展正则则要加\转义,sed -r也不用转义
 egrep "a{n}" file                       ###重复前面一个字符n次
 egrep "a{,m}" file                      ###重复前面最多m次
 egrep "a(b|c)" file                     ###匹配ab及ac的行,():分组过滤

perl正则

 \d  匹配一个数字的字符,和 [0-9] 语法一样
 \d+ 匹配多个数字字符串,和 [0-9]+ 语法一样(+表示多个)
 \D  非数字,其他同 \d
 \D+ 非数字,其他同 \d+
 \w  英文字母或数字的字符串,和 [a-zA-Z0-9] 语法一样
 \w+ 和 [a-zA-Z0-9]+ 语法一样
 \W  非英文字母或数字的字符串,和 [^a-zA-Z0-9] 语法一样
 \W+ 和 [^a-zA-Z0-9]+ 语法一样
 \s  空格,和 [\n\t\r\f] 语法一样
 \s+ 和 [\n\t\r\f]+ 一样
 \S  非空格,和 [^\n\t\r\f] 语法一样                 
 \S+ 和 [^\n\t\r\f]+ 语法一样
 \b  匹配以英文字母,数字为边界的字符串
 \B  匹配不以英文字母,数值为边界的字符串

过滤出IP地址

  ifconfig eth0| grep -E '\<inet\>'|cut -d " " -f 10 
  ifconfig eth0|grep -o "inet [0-9.]*"|grep -o "[0-9.]*"          ###o:only-matching(只匹配)
  ifconfig eth0|grep -Po '(?<=inet )\S+'                          ###perl正则取出inet 后面的一串字符以空格分隔符
ifconfig eth0 |grep '\<inet\>' |awk -F " " '{print $2}'

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值