Linux脚本攻略学习笔记11

来源:互联网 发布:最短路径的floyd算法 编辑:程序博客网 时间:2024/06/03 21:10

我们已经看过了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选项: