######################### grep 使用 ###############
测试数据:
line1: What's that smell?
line2: What's that noise?
line3: What is this line for?
line4: What are you up to?
line5: May I ask you a question?
line6: What does "drowsy" mean?
line7: What's this?
line8: What's that?
line9: Who does this belong to?
line10: Which one?
#1 显示匹配this行后再显示下2行 (参数 -A)
grep this -A 2 testfile.txt
#2 显示匹配this行周围的上2行 (参数 -B)
grep -B 2 this testfile.txt
显示匹配May行上下2行
grep May -B 2 -A 2 test
#3 显示匹配行上下各2行 相当于上面(AB)组合 (参数 -C)
grep -C 2 drowsy testfile.txt
#4 忽略二进制文件搜索 (参数 -I)
grep this -I testfile.txt
#5 显示匹配加颜色 (参数 --colour)
grep this --colour=auto testfile.txt
或者
export GREP_COLOR='1;32'
grep this --colour=auto testfile.txt
#6 计算匹配成功多少行 (参数 -c)
grep -c What testfile.txt
#7 显示过滤掉this 即:显示不匹配的行 (参数 -v)
grep -v 'this' testfile.txt
#8 搜索套接字、管道和销售队列等 (参数 -D ACTION)
#9 正则表达式搜索 (参数 -E) 相当于egrep
grep -E 'What|May' testfile.txt
grep -v -E 'Wh|this' testfile.txt
#10 输出匹配行的同时输出所属文件名 (参数 -H)
grep -H -E 'this|ye' testfile1.txt testfile.txt
grep -HEn 'this|ye' testfile1.txt testfile.txt
#11 输出匹配行的不输出所属文件名 (参数 -h)
grep -E -h 'this|ye' testfile.txt testfile1.txt
#12 忽略大小写 (参数 -i)
grep wh -i testfile.txt
#13 显示不匹配的文件名(搜索出那些文件不包含匹配yeqing) (参数 -L)
grep yeqing -L testfile*
#14 显示匹配的文件名 (哪些文件包含匹配 yeqing) (参数 -l)
grep yeqing -l testfile*
#15 搜索最多匹配行(参数 -m)
grep yeqing -m 2 testfile.txt
#16 打印匹配的行号 (参数 -n)
grep Wh -n testfile.txt
#17 只显示匹配的部分
grep -o this testfile.txt
#18 不打印,搜索到返回0 (参数 -q)
grep -q ye testfile1.txt
echo $?
#19 忽略错误信息 (参数 -s)
[root@home-backup scripts]# grep -s sss ss./a
[root@home-backup scripts]# grep sss ss./a
grep: ss./a: 没有那个文件或目录
#20 简单正则
##1 以yeqing开头的匹配
grep '^yeqing' test
##2 以yeqing结尾的匹配
grep 'yeqing$' test
##3 匹配一个指定范围内的字符
grep '[qM]' test
##4 匹配第一个字符范围是A到Z,第二个字符范围是0-9,第三个字符是yeqing的行
grep '[A-Z][0-9]yeqing' test
待续......
参考资料:
http://www.gnu.org/software/grep/manual/grep.html
http://www.debian-administration.org/articles/460
http://www.regular-expressions.info/posix.html
本文转自cloves 51CTO博客,原文链接:http://blog.51cto.com/yeqing/1597042