Grep 是一个强大的文本搜索工具,Grep 的意思是“全局正则表达式打印”。基本上,Grep 在文本文件中搜索指定的正则表达式,并将包含匹配项的任何行输出到标准输出。因此Grep命令可用于在一个或多个文本文件中搜索某种文本、单词、模式或句子。
- 建议阅读:12 个很棒的 Linux Find 命令示例
在本教程中,我们将通过一些实际示例向您展示如何使用 Grep 命令。
先决条件
- 运行Linux操作系统的系统。
- 访问终端/命令行。
搜索文件中的特定字符串
- To search for a string tecadmin in the file file1.txt, run the following command:
grep tecadmin file1.txt
此命令将打印包含单词 tecadmin 的所有行:
tecadmin is a popular linux blog
i love tecadmin
tecadminlinux
- To search for an exact string tecadmin in the file file1.txt, run the following command:
grep -w tecadmin file1.txt
此命令将打印包含整个单词 tecadmin 的所有行:
tecadmin is a popular linux blog
i love tecadmin
- To search for a string tecadmin case insensitively in the file file1.txt, run the following command:
grep -i tecadmin file1.txt
此命令将打印包含单词 tecadmin 的所有行,不区分大小写:
tecadmin is a popular linux blog
i love tecadmin
tecadminlinux
Tecadmin is my favourite blog
This is Tecadmin website
在多个文件中搜索特定字符串
- To search for a string linux in file file1.txt and file2.txt, run the following command:
grep -i linux file1.txt file2.txt
此命令将打印 file1.txt 和 file2.txt 中包含单词 linux 的所有行:
file1.txt:tecadmin is a popular linux blog
file1.txt:tecadminlinux
file2.txt:Linux is an open-source operating system.
file2.txt:linux is made by linus torvalds.
file2.txt:linux is most popular operating system.
- To search for a string linux in all files in the current directory and sub-directories, run the following command:
grep -r linux *
此命令将打印当前目录和子目录中所有文件中包含单词 linux 的所有行:
file1.txt:tecadmin is a popular linux blog
file1.txt:tecadminlinux
file2.txt:linux is made by linus torvalds.
file2.txt:linux is most popular operating system.
file3.txt:linux vs windows
file3.txt:Ubuntu is a linux operating system
逆向 Grep 搜索
您可以使用带 -v 选项的 grep 命令来打印与特定字符模式不匹配的所有行。
例如,打印file1.txt和file2.txt中不包含字符串linux的所有行,运行以下命令:
grep -v linux file1.txt file2.txt
此命令将排除包含字符串 linux 的所有行:
file1.txt:i love tecadmin
file1.txt:Tecadmin is my favourite blog
file1.txt:This is Tecadmin website
file2.txt:Linux is an open-source operating system.
列出与特定模式匹配的文件名
您可以使用 -l 选项仅显示包含特定字符串的文件名。
例如,列出当前目录中与字符串 tecadmin 匹配的所有文件名,运行以下命令:
grep -l tecadmin *
您应该看到以下输出:
file1.txt
显示匹配数
您可以使用带 -c 选项的 grep 来显示行数与给定字符串匹配的所有文件。
例如,要显示当前目录中与字符串 linux 匹配的行数的所有文件,请运行以下命令:
grep -c linux *
您应该看到以下输出:
file1.txt:2
file2.txt:2
file3.txt:2
显示具有匹配模式的行号
您可以使用带 -n 选项的 grep 来打印具有匹配模式的行号。
例如,要显示当前目录中与模式 linux 匹配的行号,请运行以下命令:
grep -n linux *
您应该看到以下输出:
file1.txt:1:tecadmin is a popular linux blog
file1.txt:3:tecadminlinux
file2.txt:2:linux is made by linus torvalds.
file2.txt:3:linux is most popular operating system.
file3.txt:1:linux vs windows
file3.txt:2:Ubuntu is a linux operating system
您还可以使用 grep 命令的选项 c 和 n 在匹配字符串的前后显示一行。
例如,显示file4.txt中匹配字符串linux前后各一行,运行以下命令:
grep -n -C 1 linux file4.txt
您应该看到以下输出:
1-Hi, i am tecadmin user
2:i am linux operating system
3-i am windows operating system
仅显示匹配模式
默认情况下,grep 命令打印与模式匹配的整行。
您可以使用 -o 选项仅打印匹配的模式。
例如,使用以下命令搜索与字符串/模式 linux 匹配的 file1.txt:
grep -o linux file1.txt
您应该看到以下输出:
linux
linux
结论
在上面的教程中,您学习了如何使用 grep 命令在文件中搜索特定字符串。我希望您现在对 grep 命令以及它如何在各种情况下使用有足够的了解。