为什么我们使用grep?
Grep是Linux用户用来搜索文本字符串的命令行工具。您可以使用它在文件中搜索某个单词或单词的组合,也可以将其他Linux命令的输出通过管道传输到grep,因此grep可以仅显示您需要查看的输出。
查找字符串
在文件a.txt中查找字符串’Class 1’
$ grep 'Class 1' a.txt
查找多个字符串
您也可以使用grep查找多个单词或字符串。您可以使用-e开关指定多个模式。让我们尝试在文本文档中搜索两个不同的字符串:
$ grep -e 'Class 1' -e Todd Students.txt
注意,我们只需要在包含空格的字符串周围使用引号。
递归搜索
可以将-r开关与grep一起使用,以递归方式搜索目录及其子目录中的所有文件,以查找指定的模式。
$ grep -r pattern /directory/to/search
如果您未指定目录,则grep只会搜索您当前的工作目录。
Grep or条件
您可以通过几种不同的方式对grep使用or条件,但是我们将向您展示一种需要最少击键且最容易记住的方法:
$ grep -E 'string1|string2' filename
或者,从技术上讲,使用egrep的击键次数甚至更少:
$ egrep 'string1|string2' filename
grep或条件忽略大小写默认情况下,grep区分大小写,这意味着您必须精确搜索大写的字符串。您可以通过告诉grep忽略-i开关的情况来避免这种情况。
忽略大小写
默认情况下,grep区分大小写,这意味着您必须精确搜索大写的字符串。通过使用-i开关告诉grep忽略大小写,可以避免这种情况。
$ grep -i string filename
Grep精确匹配
严格搜索“ apple”而并不会搜索出包含’‘apple’‘的字符串比如’‘aaapple’',可以使用以下命令:
$ grep "\<apple\>" fruits.txt
排除模式
要查看文件的内容,但要从输出中排除模式,可以使用-v开关。
$ grep -v string-to-exclude filename
带行号的Grep
要显示搜索字符串所在的行数,请使用-n开关。
$ grep -n string filename
显示之前和之后的行数
如果需要更多grep输出上下文,可以使用-c开关在指定的搜索字符串前后显示一行:
$ grep -C 1 string filename
对结果排序
将grep的输出传递给sort命令,以按某种顺序对结果进行排序。默认为字母顺序。
$ grep string filename | sort