shell中的grep命令

1.grep命令

grep命令是一种强大的文本搜索工具,根据用户指定的“模式”对目标文本进行匹配检查,打印匹配到的行
模式:由正则表达式或者字符及基本文本字符所编写的过滤条件

grep命令的基本用法

参数

说明

-c

只输出匹配行的数量

-i

搜索时忽略大小写

-h

查询多文件时不显示文件名

-l

只列出符合匹配的文件名,而不列出具体的匹配行

-n

列出所有的匹配行并显示行号

-s

不显示不存在或无匹配文本的错误信息

-v

显示不包含匹配文本的所有行

-w

匹配整词

-x

-x匹配整行

-r

递归搜索,不仅搜索当前工作目录,并且搜索子目录

-q

禁止输出任何结果,以退出状态表示搜索是否成功

-b

打印匹配行距文件头部的偏移量,以字节为单位

-o

与-b选项结合使用,打印匹配词距文件头部的偏移量,以字节为单位

-E

支持扩展的正则表达式

-F

不支持正则表达式,按照字符串的字面意思进行匹配

2.使用举例

例1:

grep root /etc/passwd	#过滤文件中含有root的行
grep -c root /etc/passwd	#-c只输出匹配行的数量
grep -n root /etc/passwd	#-n列出所有的匹配行并显示行号
grep -v root /etc/passwd	#-v显示不包含root的所有行

shell grep 输出行号 shell grep -i_正则表达式


shell grep 输出行号 shell grep -i_shell grep 输出行号_02


例2:

grep -i root passwd		#搜索时忽略大小写
grep ro*t passwd		#应用正则表达式

shell grep 输出行号 shell grep -i_子目录_03


例3:

grep root nigar
grep -s root nigar		#-s不显示不存在或无匹配文本的错误信息
echo $?

shell grep 输出行号 shell grep -i_正则表达式_04


例4:

grep -r passwd /etc/		#-r递归搜索,不仅搜索当前工作目录,并且搜索子目录

例5:

grep roo* passwd
grep -w roo* passwd		#-w匹配整词

shell grep 输出行号 shell grep -i_正则表达式_05


例6:

grep -w today test.txt 
grep -x today test.txt 	#-x匹配整行
grep  today test.txt

shell grep 输出行号 shell grep -i_搜索_06


例7:

grep -q -x today test.txt 	#-q禁止输出任何结果,以退出状态表示搜echo $?
grep -q -x toy test.txt 
echo $?

shell grep 输出行号 shell grep -i_子目录_07


例8:

grep -c ^$ passwd		#搜索空行
grep -c ^[^$] passwd		#搜索非空行

shell grep 输出行号 shell grep -i_shell grep 输出行号_08


例9:

grep -n [Rr]oot passwd	#正则表达式 表示第一个字符可以是R或r后面三个字符为oot