目录
极简用法
grep pattern filename
cat filename | grep pattern
匹配出包含pattern字符串的相应行,pattern上也可以加双引号。
参数含义
参数 | 参数含义 | 补充说明 |
-b | 给出匹配字符串的在该行的字符偏移量 | 与-o合用 |
-c | 给出匹配的行行数 | 不是匹配出的字符串数目 |
-e | 多个pattern匹配时 每个pattern前面加一个-e | |
-l | 列出匹配的文件名 | |
-o | 仅仅显示匹配的字符串 | |
-n | 显示匹配行的行号 | |
-v | 显示出未匹配字符串的行 | |
-R | 对目录的文件进行递归查找 | 与-r作用相同 |
-E | pattern使用正则表达式 | 或者直接使用egrep |
-Z | 匹配出的文件以\0字节分隔 | 与-l联合使用 |
-L | 列出不匹配的文件名 | 与-l作用相反 |
-A | 列出匹配行的后若干行 | |
-B | 列出匹配行的前若干行 | |
-C | 列出匹配行的前后若干行 |
应用举例
$ cat source.txt
GNU is not linux.
Linux is fun.
Bash is art.
$ grep "linux" source.txt
GNU is not linux.
$ grep -n "linux" source.txt
1:GNU is not linux.
$ grep -v "linux" source.txt
Linux is fun.
Bash is art.
$ grep -o "linux" source.txt
linux
更多用法
一次匹配多个文件
grep pattern filename1 filename2 ... filenameN
grep -o 只匹配出pattern字符串
$ echo This is a test line. | grep -o line
line
在当前目录及其子目录下寻找含有pattern的文件,输出的行包含了行号和所在文件
grep pattern . -R -n
找出含有特定pattern的文件予以删除,其中小写 -l 指定输出的是文件名,大写 Z 指定以 \0 字节分隔输出的多个文件名,xargs的-0参数以\0字节来分割出文件名
grep pattern . -R -lZ | xargs -0 rm
grep -c 输出匹配的行数(不是匹配的次数,一行文本多处匹配,只算作一次)
grep -E 此时pattern可以使用正则表达式来表示(相当于 egrep )
grep -v 进行反转,输出不匹配的行
grep -b -o 其中 -b 的作用是得出匹配到的pattern在本行中的偏移,需要跟 -o 一起使用,否则就整行而言偏移为0
grep -n 输出带行号
grep --color 匹配的单词带默认设置的颜色