shell编程之grep命令和egrep命令:行截取命令
Posted 锦衣admin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell编程之grep命令和egrep命令:行截取命令相关的知识,希望对你有一定的参考价值。
shell编程之grep命令和grep命令:行截取命令
grep命令和grep命令:行截取命令
egrep命令是grep命令的增强版,egrep支持更多的正则匹配字符,不用像grep那样加-E
选项
作用:行截取命令
用途:根据关键字截取想要的行,关键字如果由多个字符串组成需要用引号引起来
grep命令说明:
命令格式:
# grep 选项 "关键字" 文件名
选项说明:
-i:不区分大小写
-w:按单词搜索
-c:统计匹配到的次数
-v:查找不包含指定"关键字"的行,反向选择
-o:打印匹配关键字
-n:显示行号
-r:逐层遍历目录查找
-A:显示匹配行及后面多少行
-B:显示匹配行及前面多少行
-C:显示匹配行前后多少行
-l:只列出匹配的文件名
-L:列出不匹配的文件名
-e:使用正则匹配
-E:使用扩展正则匹配
^key:以关键字开头,如grep ^network filename
key$:以关键字结尾
^$:匹配空行
--color=auto:可以将找到的关键字部分加上颜色高亮显示,看注1
#l 注1:
centos7.x默认已经配置grep高亮模式,存放在/etc/profile.d/colorgrep.sh文件中
若其他版本系统没有高亮显示,则:
临时配置grep搜索高亮显示:
# alias grep='grep --color-auto'
永久设置:
第一种方法:全局设置(针对所有用户生效)
# vim /etc/bashrc
alias grep='grep --color=auto'
# source /etc/profile
第二种方法:局部设置(针对具体某个用户)
# vim ~/.bashrc
alias grep='grep --color=auto'
# source /etc/profile
grep命令 示例:
# grep -i root passwd => 忽略大小写匹配包含root的行
[root@server ~]# grep -i root passwd
"root":x:0:0:"root":/"root":/bin/bash
operator:x:11:0:operator:/"root":/sbin/nologin
# grep -wn ftp passwd => 精确匹配ftp单词,并显示行号
[root@server ~]# grep -w ftp passwd
12:"ftp":x:13:100:games:/usr/games:/sbin/nologin
13:ftptpf:x:14:50:FTP User:/var/"ftp":/sbin/nologin
# grep -won ftp passwd => 打印匹配到的关键字ftp,并显示行号
[root@server ~]# grep -wo ftp passwd
12:"ftp"
13:"ftp"
# grep -w hello passwd => 精确匹配hello单词
[root@server ~]# grep -w hello passwd
"hello":x:992:987::helloloo/var/lib/chrony:/sbin/nologin
# grep -n root passwd => 打印匹配到root关键字的行,并显示行号
[root@server ~]# grep -n root passwd
1:"root":x:0:0:"root":/"root":/bin/bash
10:operator:x:11:0:operator:/"root":/sbin/nologin
# grep -ni root passwd => 忽略大小写匹配包含关键字root的行,并显示行号
[root@server ~]# grep -ni root passwd
1:"root":x:0:0:"root":/"root":/bin/bash
10:operator:x:11:0:operator:/"root":/sbin/nologin
# grep -nic root passwd => 忽略大小写匹配统计包含关键字root的行数
[root@server ~]# grep -nic root passwd
2
# grep -i ^root passwd => 忽略大小写匹配以root开头的行
[root@server ~]# grep -i ^root passwd
"root":x:0:0:root:/root:/bin/bash
# grep bash$ passwd => 匹配以bash结尾的行
[root@server ~]# grep bash$ passwd
root:x:0:0:root:/root:/bin/"bash"
amandabackup:x:33:6:Amanda user:/var/lib/amanda:/bin/"bash"
# grep -n ^$ passwd => 匹配空行并打印行号
[root@server ~]# grep -n ^$ passwd
15:
25:
# grep ^# passwd => 匹配以#号开头的行
[root@server ~]# grep ^# passwd
"#"
"#" polkitd:x:999:998:User for polkitd:/:/sbin/nologin
"#"colord:x:997:994:User for colord:/var/lib/colord:/sbin/nologin
# grep -v ^# passwd 匹配不以#号开头的行,上面的反向选择
# grep -n -A 5 root passwd 匹配包含root 关键字及其后5行,并显示行号
[root@server ~]# grep -n -A 5 root 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
4-adm:x:3:4:adm:/var/adm:/sbin/nologin
5-lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6-sync:x:5:0:sync:/sbin:/bin/sync
--
10:operator:x:11:0:operator:/"root":/sbin/nologin
11-games:x:12:100:games:/usr/games:/sbin/nologin
12-ftp:x:13:100:games:/usr/games:/sbin/nologin
13-ftptpf:x:14:50:FTP User:/var/ftp:/sbin/nologin
14-hello:x:992:987::helloloo/var/lib/chrony:/sbin/nologin
15-
# grep -n -B 5 root passwd 匹配包含root 关键字及其前5行,并显示行号
[root@server ~]# grep -n -B 5 root passwd
1:"root":x:0:0:"root":/"root":/bin/bash
--
5-lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6-sync:x:5:0:sync:/sbin:/bin/sync
7-shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8-halt:x:7:0:halt:/sbin:/sbin/halt
9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/"root":/sbin/nologin
# grep -n -C 5 root passwd 匹配包含root 关键字及其前后5行,并显示行号
[root@server ~]# grep -n -C 5 root 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
4-adm:x:3:4:adm:/var/adm:/sbin/nologin
5-lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6-sync:x:5:0:sync:/sbin:/bin/sync
7-shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8-halt:x:7:0:halt:/sbin:/sbin/halt
9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11-games:x:12:100:games:/usr/games:/sbin/nologin
12-ftp:x:13:100:games:/usr/games:/sbin/nologin
13-ftptpf:x:14:50:FTP User:/var/ftp:/sbin/nologin
14-hello:x:992:987::helloloo/var/lib/chrony:/sbin/nologin
15-
以上是关于shell编程之grep命令和egrep命令:行截取命令的主要内容,如果未能解决你的问题,请参考以下文章