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命令:行截取命令的主要内容,如果未能解决你的问题,请参考以下文章

shell编程-grep命令

shell编程之grep

shell命令--grep/egrep

[CentOS 7系列]grep/egrep

Shell编程之正则表达式三剑客——grep,egrep

Shell脚本三剑客——Grep(进阶版egrep)SedAwk命令