我们已经看过了grep命令的基本用法。不过grep的本事可不止如此,他还有更多的特性。
(1):递归搜索文件
如果需要在多级目录中对文本进行递归搜索,可以使用;
grep "text" . -R -n
(2):忽略样式中的大小写
选项-i 可以使匹配样式不考虑字符的大小写,例如:
$echo hello world | grep -i "HELLO"
hello
(3):用grep 匹配多个样式
在进行匹配的时候通常至指定一个样式。然而,我们可以用选项 -e来指定多个匹配样式:
$ grep -e "pattern1" -e "pattern2"
例如:
(4)在grep搜索中指定或排除文件
grep 在搜索过程中指定(include)或排除(exclude)某些文件。我们通过通配符来制定所include或者exclude的文件
$grep "main()" . -r --include *.{c,cpp}
在搜索中排除所有的README文件:
$grep "main()" . -r --exclude "README"
如果需要排除目录,可以使用"--exclude-dir"选项。
(6)静默输出
有时候,我们并不打算查看匹配的字符串,而只是想知道是否能够成功匹配。这可以通过设置grep的静默选项(-q)来实现。在静默模式中,grep命令不会输出任何内容。他仅是运行命令,然后根据命令执行成功与否返回退出状态。
来看一个脚本
这个脚本的用途就是测试文件时候包含测试的内容。
(7)打印出匹配文本之前或者之后的行。
如要打印匹配结果之后的3行,使用-A选项:
$seq 10 | grep 5 -A 3
要打印匹配某个结果之前的3行,使用-B选项:
要打印匹配某个结果之前以及之后的3行,使用-C选项: