llinux文本处理工具

grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。linux

[options]主要参数:
-c:只输出匹配行的计数。
-I:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及 行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:取反
grep:
llinux文本处理工具正则表达式

[root@centos7 ~]#grep -i "^S" /proc/meminfo
[root@centos7 ~]#grep -v "bash$" /etc/passwd
[root@centos7 ~]#grep '\<rpc\>' /etc/passwd|cut -d: -f7
/sbin/nologin
正则表达式:
选项与参数:
 --color=auto: 对匹配到的文本着色显示
 -v: 显示不被pattern匹配到的行
 -i: 忽略字符大小写
 -n:显示匹配的行号
 -c: 统计匹配的行数
 -o: 仅显示匹配到的字符串
 -q: 静默模式,不输出任何信息
 -A #: after, 后#行
 -B #: before, 前#行
 -C #:context, 先后各#行
 -e:实现多个选项间的逻辑or关系 grep –e ‘cat ’ -e ‘dog’ file
 -w:匹配整个单词
 -E:使用ERE ,egrep
 -F:至关于fgrep,不支持正则表达式
^ 锚定行的开始 如:'^grep'匹配全部以grep开头的行。 shell

$ 锚定行的结束 如:'grep$'匹配全部以grep结尾的行。 express

. 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,而后是p。centos

  • 匹配零个或多个先前字符 如:'grep'匹配全部一个或多个空格后紧跟grep的 行。 .一块儿用表明任意字符。
  • [] 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。bash

[^] 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。 app

(..) 标记匹配字符,如'(love)',love被标记为1。ide

\ 锚定单词的开始,如:'\匹配包含以grep开头的单词的行。函数

\> 锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。工具

x{m} 重复字符x,m次,如:'0{5}'匹配包含5个o的行。

x{m,} 重复字符x,至少m次,如:'o{5,}'匹配至少有5个o的行。

x{m,n}重复字符x,至少m次,很少于n次,如:'o{5,10}'匹配5--10个o的行。

\w 匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,而后是p。

\b 单词锁定符,如: '\bgrep\b'只匹配grep。
取函数名称
[root@centos6 ~]#grep -o "^[[:alnum:]_]+[[:space:]]*()" /etc/init.d/functions
再就是分组总体,这是一个或的意思
[root@centos6 ~]#echo axx bxx cxx |grep "(a|b|c)xx"
axx bxx cxx

llinux文本处理工具
(a..b)
a12b
axyb
a12b
后向引用
llinux文本处理工具
llinux文本处理工具
llinux文本处理工具
后向引用就是第二个匹配和第一个同样
做业:
一、显示三个用户root、mage、wang的UID和默认shell

[root@centos7 app]#grep -E "^(root|mage|wang)\b" /etc/passwd

二、找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行
三、[root@centos7 app]#egrep "[[:alnum:]_]+()" /etc/rc.d/init.d/functions
四、
三、使用egrep取出/etc/rc.d/init.d/functions中其基名
[root@centos7 app]#echo "/etc/init.d/functions" |egrep -o "[^/]+/?$"

四、使用egrep取出上面路径的目录名
五、[root@centos7 app]#echo "/etc/rc.d/init.d/functions"|egrep -o "^/./\b"
六、
五、统计last命令中以root登陆的每一个主机IP地址登陆次数
last |grep ^root |egrep -o "([0-9]{1,3}.){3}[0-9]{1,3}" |sort |uniq -c
六、[root@centos7 app]#last |grep "root"|egrep -o "([0-9]{1,3}.){3}[0-9]{1,3}"|sort -n|head -n1
七、
六、利用扩展正则表达式分别表示0-九、10-9九、100-19九、200-24九、250-255
[0-9],[1-9][0-9],1[0-9][0-9],2[0-4][0-9],25[0-5]
七、显示ifconfig命令结果中全部IPv4地址
八、[root@centos7 app]#ifconfig|egrep -o "([0-9]{1,3}.){3}[0-9]{1,3}"
九、
八、将此字符串:welcome to magedu linux 中的每一个字符去重并排序,重复次数多的排到前面
九、[root@centos7 app]#echo "welcomme to magedu linux" |grep -o "[[:alpha:]]"|sort |uniq -c|sort -n
十、
[root@centos7 app]#echo "welcomme to magedu linux" |grep -o "[[:alpha:]]"|sort |uniq -
九、用正则表达式表示出QQ号
十、egrep [0-9]{5,10}
十、用正则表达式表示出×××号
十一、[root@centos7 app]#echo "36042919891003193X" |egrep -o [0-9]{17}[A-Z]
十二、用正则表达式表示手机号
1三、root@centos7 app]#echo "13169917543"|egrep -o "^1[3|4|5|7|8][0-9]{9}$"
1四、
1五、十二、用正则表达式表示邮箱: x@y.z.m
[root@centos7 app]#echo "-7yin1
2@vip.qq.xom"|egrep "[[:alnum:]_/]{5,15}@([[:alnum:]]{0,5}.)?[[:alnum:]]{0,5}.[[:alnum:]]{2,3}"-7yin12@vip.qq.xom

相关文章
相关标签/搜索