文本查看工具:less,more,cat,tail,head
文本检索工具:grep,egrep,fgrep,find
文本处理工具:sort,cut,awk,sed
grep是基于正则表达式对指定文本进行搜索操作
1.基本正则表达式
正则表达式:由一类特殊字符及文本字符缩编写的模式,其有些字符不表示其字面含义,而是用于表示控制或通配的功能。
分为两类:基本正则表达式、扩展正则表达式
1.1 字符匹配:
"
.
":匹配任意单个字符"[]":匹配范围内的任意单个字符
"[^]":匹配范围外的任意单个字符
"[:digit:]":任意单个数字
"[:lower:]":任意单个小写字母
"[:upper:]":任意单个大写字母
"[:alpha:]":任意单个字母(不区分大小写)
"[:alnmu:]":任意单个字符(不区分大小写字母,数字)
"[:space:]":任意空字符
1.2 次数匹配
"*":匹配前面的字符任意次(0,1,或多次)
".*":匹配任意长度的任意字符
"+":匹配前面的字符至少一次("",斜线为转义)
"\?":匹配前面的字符
0
次或1
次,即前面的字符可有可无"{\m,}":其前面的字符出现至少m次,m为非负整数
"{0,n}":其前面的字符至多出至多n次
"{m,n}":其前面的字符出现至少m次,至多n次
1.3 位置锚定
限制使用模式搜索文本,限制模式所匹配到的文本只能出现于目标文本的哪个位置;
"^":行首锚定,用于匹配模式的最左侧
"$":行尾锚定,用于匹配模式的最右侧
1.4 单词锚定
单词:由非特殊字符组成的连续字符(字符串)都称为单词;
"\<或\b":词首锚定,用于单词模式的左侧
">或\b":词尾锚定,用于单词模式的右侧
"\":单词锚定\>
2. 扩展正则表达式:egrep
支持使用扩展正则表达式的grep命令,相当于grep -E.
2.1 字符匹配:
".":任意单个字符
"[ ]":范围内任意单个字符
"[^ ]":范围外任意单个字符
2.2 次数匹配
"*":任意次
"?":0次或1次
"+":1次或多次
"{m}":匹配m次
"{m,n}":至少m次,至多n次
"{0,n}":至多n次
"{m,}":至少m次
2.3 位置锚定
"^”:行首锚定
"$":行尾锚定
"\<,\b":词尾锚定
"/>,\b":词尾锚定
2.4 或者
"a|b":a或者b
"C|cat":C或者cat
"(C|c)at":Cat或cat
3.grep命令选项
常用选项:
-i:忽略字符大小写
-o:仅显示匹配到的文本本身
-v:反向匹配
-E:支持扩展的正则表达式
-q,--quite:静默模式,不输出任何信息
###4.示例
1.显示/etc/passwd文件中不以bash结尾的行
grep -v "bash$" /etc/passwd grep -o "^bash$" /etc/passwd
2.找出/etc/passwd文件中还不宜bash结尾的行
grep "\<[0-9]\{3,4\}\>" /etc/passwd egrep "\<[0-9]{3,4}\>" /etc/passswd
3.找出/etc/grub2.cfg文件中,以至少一个空白字符开头,后面又跟了一个非空白字符的行
grep "^[[:space:]]\+[^[:space:]]" /etc/grub2.cfg
4.找出"netstat -tan"命令中,以"LISTEN"后跟0或多个空白字符结尾的行
netstat -tan | grep "LISTEN[["space"]]*$"
5.找出"fdisk -l"命令的结果中,包含以/dev/后跟sd或hd及一个小字母的行
fdisk -l | grep "/dev/[sh]d[a-z]\>"
6.找出"ldd /usr/bin/cat"命令结果中文件路径
ldd /bin/ab |sed '1d'|egrep "/[^[:space:]]+"
7.找出/proc/meminfo文件中,所有以大写或小写s开头的行
grep "^[Ss]" /tmp/meminfo egrep "^[S|s]" /tmp/meminfo grep -i "^s" /tmp/meminfo
8.显示当前系统上root,centos,slackware用户的相关信息
egrep "^(root|centos|slackware)" /etc/passwd
9.echo一个绝对路径,取出其基名
echo /etc/httpd/conf | egrep -o "[^/]+/?$"echo /etc/httpd/conf | egrep -o "/.*/" #取出其路径名
10.找出ifconfig命令中的1-255之间的整数
ifconfig|egrep "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>"
转载于:https://blog.51cto.com/538358/1846234