shell中的grep命令
1.什么是grep命令
2.grep命令的基本用法
参数 |
说明 |
-c |
只输出匹配行的数量 |
-i |
搜索时忽略大小写 |
-h |
查询多文件时不显示文件名 |
-l |
只列出符合匹配的文件名,而不列出具体的匹配行 |
-n |
列出所有的匹配行并显示行号 |
-s |
不显示不存在或无匹配文本的错误信息 |
-v |
显示不包含匹配文本的所有行 |
-w |
匹配整词 |
-x |
匹配整行 |
-r |
递归搜索,不仅搜索当前工作目录,并且搜索子目录 |
-q |
禁止输出任何结果,以退出状态表示搜索是否成功 |
-b |
打印匹配行距文件头部的偏移量,以字节为单位 |
-o |
与-b选项结合使用,打印匹配词距文件头部的偏移量,以字节为单位 |
-E |
支持扩展的正则表达式 |
-F |
不支持正则表达式,按照字符串的字面意思进行匹配 |
3.使用grep命令的例子
1.grep:显示包含模式所有的行
grep root /etc/passwd #过滤文件中含有root的行
2.-c:输出匹配字符串的行的数量
grep -c root /etc/passwd #-c只输出匹配行的数量
3.-n:列出所有匹配的行并且显示行号
grep -n root /etc/passwd #-n列出所有的匹配行并显示行号
4.-v:显示不包含模式的所有的行
grep -v root /etc/passwd #-v显示不包含root的所有行
grep -vc root /etc/passwd #显示不包含root的所有行的数量
5.-i:不区分大小写显示包含模式所有的行
grep -i root passwd #搜索时忽略大小写
6.grep应用正则表达式查找
grep ro*t passwd #应用正则表达式
7.-s:不显示错误的信息
grep root lalala #
grep -s root lalala #-s不显示不存在或无匹配文本的错误信息
8.-r:不仅搜索当前目录,还递归搜索子目录
grep -r passwd /etc/ #查找/etc及其子目录中 所有包含passwd的文件 并打印出该字符串所在行的内容
9.-w:匹配整句(元字符不再被认定为特定的含义)
grep roo* passwd
grep -w roo* passwd #-w匹配整词
10.-x:匹配整行(只有文件中有某一整行的内容能匹配上时,grep才会输出该行的内容)
grep world test.txt
grep -x world test.txt #-x匹配整行
11.-q:不会显示搜索结果,以退出状态表示搜索成功与否
grep -q -x world test.txt #-q不会输出任何结果,以退出状态表示是否搜索成功
echo $?
grep -q -x hello test.txt
echo $?
4.正则表达式和grep结合的例子
1.查找空白行并打印行数
grep -c ^$ passwd #查找空白行并打印行数
2.查找并非空白行的行并且只打印行数
grep -c ^[^$] passwd #搜索非空行。能匹配开头就不是空行
3.不区分大小写
grep -n [Rr]oot passwd #表示第一个字符可以是R或r后面三个字符为oot
4.和通配符结合
grep '[[:alpha:]]\{3\}t' passwd #查找passwd文件中3个字母后跟t的行