1. 从stdin读取输入
$ echo -e "this is a word\nnext line" | grep word
2. 在单个文件中搜索文本
chicol@debian:~/scripts/chapter_4$ grep word a.txt
this is a word
3. 在多个文件中搜索文本
chicol@debian:~/scripts/chapter_4$ grep word a.txt b.txt
a.txt:this is a word
b.txt:this is another word
4. 用--color选项可以在输出行中加粗显示匹配到的单词
chicol@debian:~/scripts/chapter_4$ grep word --color=auto a.txt b.txt
a.txt:this is a
word
b.txt:this is another
word
5. grep -E 匹配模式里可以使用正则表达式,或者用egrep,默认可以使用正则表达式
6.
grep -o 只输出文件中匹配到的部分
chicol@debian:~/scripts/chapter_4$ grep -o word a.txt
word
7. grep -v打印除匹配到行之外的所有行
8. grep -c 统计匹配到字符串的行数
chicol@debian:~/scripts/chapter_4$ cat matchworld.txt
text text
text
chicol@debian:~/scripts/chapter_4$ grep -c text matchworld.txt
2
9. 要统计匹配项的数量,可以用下面的技巧
chicol@debian:~/scripts/chapter_4$ grep -o text matchworld.txt
text
text
text
chicol@debian:~/scripts/chapter_4$ grep -o text matchworld.txt | wc -l
3
10. grep -n 打印出匹配行的行号
chicol@debian:~/scripts/chapter_4$ grep -n word a.txt
1:this is a word
11. grep -i 忽略大小写
12. 匹配多个样式
grep -e “pattern1” -e “pattern2”
13. grep “pattern” -R -n 多级目录下递归搜索文件匹配
14. 在grep搜索中指定或排除文件
grep “pattern” . -r --include *.{c,cpp} 在当前目录递归搜索所有的.c和.cpp文件
grep "pattern" . -r --exclude "README" 在搜索中排除所有的README文件
排除目录用--exclude-dir
15. 打印出匹配文本之前或之后的行
chicol@debian:~/scripts/chapter_4$ seq 10 | grep 5 -A 1 打印匹配文本之后的1行
5
6
chicol@debian:~/scripts/chapter_4$ seq 10 | grep 5 -B 1
打印匹配文本之前的1行
4
5
chicol@debian:~/scripts/chapter_4$ seq 10 | grep 5 -C 1
打印匹配文本前后的1行
4
5
6
阅读(1397) | 评论(0) | 转发(0) |