如何在Linux中使用grep命令和示例
说明
在本教程中,我们将通过常见用例示例学习如何在Linux,Unix和OSX中使用grep命令。
Linux中的grep命令是一种实用程序,用于在任何给定的输入文件中搜索一个或者多个匹配的单词或者模式。它用于在单个文件或者整个目录(包括子目录)中搜索匹配的字符串。
单个文件Grep搜索
要在单个文件中查找单词,我们指定要匹配的单词并搜索文件。例如,要在名为" file.txt"的文件中找到单词" hello",我们将运行以下命令。
grep "hello" file.txt
多文件Grep搜索
我们可能会发现自己想在多个文件中搜索匹配的字符串。 grep命令允许我们通过在命令末尾添加多个文件来将多个文件链接到我们的搜索中。
例如,要在文件" file1"," file2"," file3"和" file4"中找到世界" hello",我们将运行以下命令。
grep "hello" file1 file2 file3 file4
Grep将搜索每个文件并输出每个文件的匹配行。
忽略大小写
Grep默认情况下区分大小写。它使用命令行中指定的确切大小写进行搜索。如果不知道情况或者想查找所有情况,则添加-i
标志。
grep -i Student1 ~/class/students
递归目录搜索
默认情况下,grep命令不会递归搜索目录。要执行递归搜索,其中grep在所有嵌套的子目录的文件中找到一个字符串,则可以使用-r或者-R标志。
grep -r "error" /var/logs
Grep搜索多个单词
使用grep可以匹配多个单词,当我们不确定要查找的内容或者想要查找多个项目时,这很有用。
要搜索多个单词,请使用|
字符。由该字符分隔的每个单词将单独匹配。
例如,要在所有Apache Web服务器日志的输出中找到单词" warning"或者" error",我们可以运行以下命令。
grep 'warning|error' /var/log/apache2
用Grep计数比赛
我们可能更想知道匹配的数目,而不是将匹配的结果输出到文件或者屏幕。 Grep支持使用-c标志来计数比赛。
grep -c "error" /var/logs/apache2
与Grep逆向比赛
反向匹配返回的结果与grep所使用的单词或者模式不匹配。要使用grep执行逆向匹配,请使用-v标志。
例如,如果要返回除错误以外的所有日志条目,则可以使用以下命令。
grep -v "error" /var/log/apache2
忽略二进制文件
如果发现自己要匹配目录或者嵌套目录中的文件,则可能要在搜索中排除二进制文件。为此,请使用-I标志。
grep -I -r "student1" /opt/myapp
仅显示匹配项的文件名
如果我们对查找带有匹配单词或者模式的文件更感兴趣,则Grep仅可以输出文件名。要仅输出包含匹配单词或者模式的文件名,请在命令中使用-l
或者--files-with-matches
标志。
grep -l -r "student1" /var/logs
显示不匹配的文件名
要输出不包含匹配单词或者模式的文件名列表,请使用-L或者--files-without-match标志。
grep -L "student1" /var/logs