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的所有行
例2:
grep -i root passwd #搜索时忽略大小写
grep ro*t passwd #应用正则表达式
例3:
grep root nigar
grep -s root nigar #-s不显示不存在或无匹配文本的错误信息
echo $?
例4:
grep -r passwd /etc/ #-r递归搜索,不仅搜索当前工作目录,并且搜索子目录
例5:
grep roo* passwd
grep -w roo* passwd #-w匹配整词
例6:
grep -w today test.txt
grep -x today test.txt #-x匹配整行
grep today test.txt
例7:
grep -q -x today test.txt #-q禁止输出任何结果,以退出状态表示搜echo $?
grep -q -x toy test.txt
echo $?
例8:
grep -c ^$ passwd #搜索空行
grep -c ^[^$] passwd #搜索非空行
例9:
grep -n [Rr]oot passwd #正则表达式 表示第一个字符可以是R或r后面三个字符为oot