Linux中的grep命令

在本教程中,我们将学习如何在 Linux 中使用 grep 命令。 我们使用 grep 命令在文件或文本输出中进行搜索。 grep 命令也可以使用管道“|”与其他命令组合操作员。 Linux 中的 grep 命令可用于搜索模式或正则表达式(Regex 代表正则表达式)。 我们将在本教程中讨论 grep 命令的许多用途。

grep 的基本语法如下:

$ grep 'word' filename $ grep [option] 'word' filename 

考虑以下两个文件 grepdemo.txt 和 grepdemo1.txt 作为基于此文本执行的示例。

Grepdemotext 1

进一步,在这里我们将讨论在 Linux 中与 grep 命令一起使用的一些选项:

  • -这: 只显示匹配的字符串。
  • -b: 打印匹配字符串的位置
  • -C: 计​​算匹配字符串的重复次数
  • -H: 用匹配的字符串打印文件名
  • -一世: 打印匹配的字符串,不管它是大写还是小写。
  • -n:打印匹配行的文件的行号
  • -v: 打印那些不包含匹配字符串的行。

在 Linux 中使用 grep 命令在文件中搜索单词

如前所述,grep 命令用于从文件中搜索特定单词。 为此,我们只需要提及单词和文件名。

其语法如下:

$ grep "text to find" [filename] 
搜索

在上面的屏幕截图中,Linux 中的 grep 命令在 grepdemo.txt 中搜索单词“linux”,并将打印包含指定字符串的行。 如上所示,它在文件中只出现过一次。

从所有文件中搜索一个词

在上面的示例中,我们讨论了如何从特定文件中搜索单词。 在这里,我们将讨论如何在一组文件中搜索一个单词。 为此,我们将使用“*”符号。 让我们从一个例子中理解

$ grep 'word' grep*.txt 
格雷普斯塔

在这里,它将打印文件名以“grep”开头并具有“.txt”扩展名的所有文件中出现的“the”

在 Linux 中使用 grep 命令搜索 RegEx 模式

大家都知道 regex 代表正则表达式。 Grep 命令还可以搜索正则表达式模式。 让我们通过一个例子来理解。

考虑语法:

$ ls -l | grep ^d 
地理信息系统

在此示例中,grep 命令将搜索以字母“d”开头的文件名。 使用 ls 命令将列出位于桌面的所有文件和文件夹。 在这里,它列出了 8 个文件/文件夹,其中 ‘d’ 位于开头。 您还可以使用此语法搜索任何正则表达式。

在 Linux 中使用 grep 命令仅打印请求的字符串

您可能已经注意到,默认情况下 grep 命令会打印包含搜索关键字的行。 如果您希望 Linux 中的 grep 命令仅显示模式的匹配字符串,请使用“-o”选项。 让我们从一个例子来理解这一点。

其语法如下:

$ grep -o "the" grepdemo.txt 
grep0

在这里,它将只打印搜索到的关键字而不是完整的行。

显示匹配模式的位置

Linux 中 grep 命令的“-b”选项可让您打印匹配字符串的位置。 让我们从下面的例子中理解。

考虑语法:

$ grep -o -b "is" grepdemo.txt 
格力布

在这里,它将打印特定关键字在每一行上出现的位置。 我将“-b”与“-o”结合起来,这样它就只能打印搜索到的字符串。

颜色或突出显示搜索的字符串

如果您希望搜索的字符串具有不同的颜色,您可以使用 GREP_COLOR。 为此,首先导出文件,然后运行 ​​grep 命令。 考虑以下示例。

$  GREP_COLOR='100;10' $ alias grep='grep --color=always'  $ grep --color=always "the" grepdemo.txt 
Grep 颜色输出Grep 颜色输出

在此示例中,搜索到的键盘被突出显示。 在第二个图中,它只会标记搜索关键字所在的位置。 请记住,如果要突出显示搜索关键字,则必须使用导出命令,否则它将不起作用。

在 Linux 中使用 grep 命令计算重复次数

我们还可以在 Linux 中使用 grep 命令来统计搜索到的字符串的重复次数。 为此,我们可以使用“-c”选项。 考虑这个例子:

$ grep -c "word" grep*.txt 
grepcount

上面的屏幕截图演示了关键字“testing”在特定文件中重复了多少次。 在这里,我统计了所有文件中的搜索关键字。 您也可以在单个文件中搜索它。 只需删除“*”并提及文件名。

使用搜索到的字符串打印文件名

早些时候,我们只是打印搜索字符串的行或关键字。 但在这种情况下,我们也会打印包含行的文件名,如下图所示。 我们将在 grep 命令中使用“-H”选项。

考虑以下语法:

$ grep -H "Word" [filename] 
格雷夫

在此示例中,它将打印文件名以及搜索字符串所在的行。

在 Linux 中使用 grep 命令进行不区分大小写的搜索

此命令选项忽略大小写条件并在文件中搜索单词。 假设你想搜索“linux”,它会搜索并打印所有出现这个词的行,而不管它的大小写。 匹配字符串是大写还是小写都没有关系。 如果找到匹配项,它将仅打印该行,如下面给出的示例所示。

下面给出了以下语法:

$ grep -i "linux" grep*.txt 
格雷皮

将 grep 命令输出存储在文件中

如果要保存搜索结果怎么办。 如前文所述,’>’ 用于输出重定向。 它将命令的输出保存在一个文件中,如下图所示。

以下的语法是:

$ grep "word" [filename] > [filename] 
grepinput

在示例中,结果将存储在名为 text1.txt 的文件中。

在 grep 命令输出中显示行号

我们知道如何打印带有搜索关键字的文件名。 现在,如果要打印匹配行的文件的行号怎么办。 grep 命令的“-n”选项用于打印与匹配行的文件的行号,如下图所示。

以下的语法是:

$ grep -n "word" [filename] 
格列普

在这里,它将打印出现搜索关键字的行号。

在 Linux 中使用 grep 命令反转匹配

到目前为止,我们一直在搜索关键字并打印该行。 如果我们想打印不包含匹配字符串的行怎么办? ‘-v’ 选项用于此,如下图所示。

以下的语法是:

$ grep -v "word" [filename] 
格雷普夫

在这里,它将打印那些不包含搜索关键字的行。

检查版本

要在 Linux 中检查 grep 命令的版本,我们使用 ‘-version’ 选项。

语法是:

$ grep --version 
grepversion

如图,会打印grep命令的版本。

结合多个选项

我们还可以在 Linux 的 grep 命令中组合多个选项,如下图所示。

以下的语法是:

$ grep -v -n "word" [filename] 
grepvn

在这里,我们结合了“-v”和“-n”选项。 ‘-v’ 用作反向匹配,而’-n’ 用于打印行号。 因此,它将打印未出现此搜索关键字的那些行号。 你可以在上面给出的图中看到。 它打印了那些不包含“linux”字符串的行号和行。

结论

在本教程中,我们介绍了如何在 Linux 中使用 grep 命令。 我们希望您现在知道如何有效地使用该命令。 如果您有任何疑问,请在评论中告诉我们。