egrep postfix 样式 res 空行 一个 sbin earch 一行
知识小提示
grep '[0-9]' 这是表示匹配里面的 0-9 的任何数字
grep '^[0-9]' 这是表示匹配 以 0 或 9 开头的
grep '[^0-9] 这是表示匹配除开 0-9,其他任何字符或者字母的行
grep '^[^0-9]' 这是表示匹配除开 0-9. 其他任何字符或者字母开头的行
'[^]' '^[]' 这是两种形式
'[^$]' 这是表示空行
在正则表达式中, "^" 表示行的开始, "$" 表示行的结尾,那么空行则可以用 "^$" 表示,
[a?b] 表示 a 和 b 之间的中间那个?好可以表示任意一个.
正则表达式
按照个人的意思来理解的话,就是按照某种规则来执行
命令名称
grep
命令描述
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.
命令语法
grep [参数][文件]
参数
-a 不要忽略二进制数据.
-A <显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容.
-b 在显示符合范本样式的那一行之外,并显示该行之前的内容.
-c 计算符合范本样式的列数.
-C <显示列数> 或 -<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容.
-d <进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则 grep 命令将回报信息并停止动作.
-e <范本样式> 指定字符串作为查找文件内容的范本样式.
-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式.
-f <范本文件> 指定范本文件,其内容有一个或多个范本样式,让 grep 查找符合范本条件的文件内容,格式为每一列的范本样式.
-F 将范本样式视为固定字符串的列表.
-G 将范本样式视为普通的表示法来使用.
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称.
-H 在显示符合范本样式的那一列之前,标示该列的文件名称.
-i 忽略字符大小写的差别.
-l 列出文件内容符合指定的范本样式的文件名称.
-L 列出文件内容不符合指定的范本样式的文件名称.
-n 在显示符合范本样式的那一列之前,标示出该列的编号.
-q 不显示任何信息.
-R/-r 此参数的效果和指定 "-d recurse" 参数相同.
-s 不显示错误信息.
-v 反转查找.
-w 只显示全字符合的列.
-x 只显示全列符合的列.
-y 此参数效果跟 "-i" 相同.
-o 只输出文件中匹配到的部分.
案例一:搜索指定的内容
案例二:搜索指定的内容有多少行里面有
[root@localhost ~]# cat /etc/passwd|grep root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#
案例三:搜索指定的内容并且显示行号
[root@localhost ~]# cat /etc/passwd|grep -c root
2
[root@localhost ~]#
案例四:排除指定内容 ,把其它内容显示打印出来
[root@localhost ~]# cat /etc/passwd|grep -n root
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#
案例五: 搜索指定的内容并且把指定的内容和下面的两行显示出来
[root@localhost ~]# cat /etc/passwd|grep -v root
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
[root@localhost ~]#
案例六:搜索包含 0 到 9 的内容
[root@localhost ~]# grep -nA2 'root' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
2-bin:x:1:1:bin:/bin:/sbin/nologin
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11-games:x:12:100:games:/usr/games:/sbin/nologin
12-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@localhost ~]#
案例七:指定要过滤字符出现的次数
[root@localhost ~]# grep [0-9] /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
[root@localhost ~]#
这里用到了 {},其内部为数字,表示前面的字符要重复的次数.上例中表示包含有两个 o 即'oo'的行.注意,{} 左右都需要加上脱意字符 '\', 另外,使用 {} 我们还可以表示一个范围的,具体格式是'{n1,n2}' 其中 n1
[root@localhost ~]# grep 'o{2}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
[root@localhost ~]#
命令名称
egrep
命令描述
grep 的扩展
案例:过滤一个或者多个指定的字符
正则表达式,grep/egrep 工具的使用
[root@localhost ~]# egrep '00+' /etc/passwd
games:x:12:100:games:/usr/games:/sbin/nologin
[root@localhost ~]#
来源: http://www.bubuko.com/infodetail-2462755.html