lsof |grep delete卡住_针对初学者的Grep命令教程和示例

这篇教程介绍了Linux中grep命令的使用,包括搜索文本文件、正则表达式、不区分大小写搜索、行首行尾匹配等功能。还讲解了egrep和fgrep的差异,egrep支持更复杂的正则表达式,而fgrep不识别特殊字符,适合用于实际字符串匹配。学习grep是Linux系统操作的基础和重要技能。
摘要由CSDN通过智能技术生成

Written by Sk August 14, 2020

d3ffd4db283d9320fb10ed49a2eec1c6.png

在本教程中,我们将学习"grep"命令。Grep代表Global regular expression print。顾名思义,Grep用于搜索带有正则表达式(即regex)的文本文件。它在会打印出文本文件中与给定模式匹配的行。如果没有给出任何文件,grep将在当前目录的文件中递归地搜索给定的模式。Grep有两个变体,即egrepfgrep。不建议使用这些变体,它们存在的意义是为了向后兼容。您可以分别使用“egrp”和“fgrep”,而不是使用“grep -E”和“grep -F”。闲话少说,让我们开始吧。

Grep命令示例

我有一个文件名为file.txt的文件,其内容为一些随机的单词。让我们看一下file.txt:

$ cat file.txtostechnixOstechnixo$technixlinuxlinusunixtechnologyhello worldHELLO world

要开始搜索,只需输入grep,然后输入要查找的内容以及需要查询的文件。例如,我将在file.txt中查找字符串"nix"。为此,我需要运行:

$ grep nix file.txt

样例输出:

ostechnixOstechnixo$technixunix

正如您在上面的输出中看到的,我们得到了两个包含匹配模式“nix”的单词。如果搜索字符串有两个单词,请将它们放在单引号中,如下所示。

$ grep 'hello world' file.txt hello world

您还可以使用-n标志来显示输出中的行号:

$ grep -n nix file.txt

输出样例:

1:ostechnix2:Ostechnix3:o$technix6:unix

这在处理非常长的代码时很有用。

请注意,grep是区分大小写的。例如,当你搜索"os"时,它不会显示包含大写字母的行,即Os。

检查下面的示例。

$ grep os file.txt ostechnix

但是,文件中还有一个词叫"Ostechnix",grep并没有列出它。

如果你希望忽略区分大小写,可以使用"-i"标志,如下所示。

$ grep -i os file.txt ostechnixOstechn1x$ grep -i 'hello world' file.txt hello worldHELLO world

现在,grep将不会关心大小写,我们在结果中得到包含大写和小写字母的单词。

我们还可以将命令的输出传输到grep中。看一下下面的例子。

$ cat file.txt | grep osostechnix

现在看看我们得到了什么。file.txt的输出通过管道传递给grep,并最终显示出file.txt中包含字母“os”的单词。

我们还可以在grep中使用一些特殊字符或正则表达式。

  • ^ -搜索行首。
  • $ -在行尾搜索。
  • . -搜索任何字符。

让我向您展示一个示例,以便您能够理解在何时以及如何使用这些特殊字符。您已经知道,我们可以搜索包含字符串“tech”的单词,如下所示。

$ grep tech file.txtostechnixOstechnixo$technixtechnology

但是,如果您只想搜索仅以“tech”开头的行呢?您不希望显示包含该字符串的所有单词,而只显示开头有字符串“tech”的单词。这也是可能的。这就是特殊字符派上用场的地方。

要搜索与文件中行首字母“tech”匹配的单词,运行:

$ grep ^tech file.txttechnology

类似地,我们可以搜索以特定字符串结尾的单词,例如“x”,如下所示。

$ grep x$ file.txtostechnixOstechnixo$technixlinuxunix

此外,您还可以使用.查找包含任何字符的单词。

例如,让我们搜索文件中具有"n"的任何单词。

$ grep .n file.txtostechnixOstechnixo$technixlinuxlinusunixtechnology

您现在应该对grep的用法有了基本的了解。让我们继续学习其他两个变体,即egrepfgrep

Egrep命令示例

egrep代表e xtendedgrep。它类似于“grep -E”命令。它能完成grep能完成的所有工作。但是,它提供了一些额外的功能,比如使用复杂的正则表达式。

例如,我们可以搜索以“l”“o”开头的任何单词。 记住,我们使用插入符号(^)来搜索行首的单词。因此,上述查询需要使用的命令为:

$ egrep '^(l|o)' file.txtostechnixo$technixlinuxlinus

看到了吗?我们得到了所有以“l”或“o”开头的单词。请注意,普通的grep命令无法做到这一点。

类似地,我们可以搜索以“l”到“u”之间的任何字符开头的行。这意味着,我们将得到以l, m, n, o, p, q, r, s, t和u开始的行,其他的都将从结果中省略。

$ egrep '^[l-u]' file.txtostechnixo$technixlinuxlinusunixtechnology

请注意,我使用了方括号([)来搜索单词范围。因为grep是区分大小写的,所以它不会在给定范围内查找以大写字母开头的行。

为了显示所有以大写和小写字母开头的行,我们使用:

$ egrep '^[l-u]|[L-U]' file.txt

或者,

$ egrep '^([l-u]|[L-U])' file.txt

样例输出:

ostechnixOstechnixo$technixlinuxlinusunixtechnologyHELLO world

看到了吗?现在我们已经得到了以字符范围“l”到“u”(大写或小写)开头的单词。

Fgrep命令示例

fgrep代表fast grep。它类似于“grep -F”。fgrep不能识别正则表达式或特殊字符。在需要实际用到正则表达式中的符号的地方可以使用fgrep。

例如,之前我们使用下面的命令来查找以“x”结尾的单词。

$ grep x$ file.txtostechnixOstechnixo$technixlinuxunix

现在使用fgrep运行相同的命令。

$ fgrep x$ file.txt

它不会显示任何内容,因为它不能计算特殊字符。

现在让我们看另一个例子。要用grep命令搜索与字符串"o$"匹配的单词,我们运行:

$ grep o$ file.txt

但是,我们一无所获,为什么?因为,按照上面的命令,我们使用美元符号($)来表示查找以“o”结尾的单词。因为文件中没有以“o”结尾的字符,我们什么都没得到。

现在,使用fgrep运行相同的命令。

$ fgrep o$ file.txt o$technix

看到了吗?这就是我们使用fgrep命令的地方。它会忽略美元符号(当然是特殊字符),并显示包含字符串“o$”的单词。

有关grep的详细信息,输入:

$ grep --help

它将提供所有可能的选项。或者,查看参考手册。

$ man grep

grep的词源

Grep是由Ken Thompson在一夜之间编写的,他也是Unix的开发者。但是它的名字是怎么来的呢?Brian Kernighan教授在他的一个视频中解释了grep的词源。

这次的内容就是这些了。Grep是您应该彻底学习的重要命令之一。

您现在知道了什么是grep,以及如何使用它在GNU/Linux中搜索具有匹配模式的文本文件。希望这对大家有用。

本文译自: The Grep Command Tutorial With Examples For Beginners

作者: Sk

译者: 生材有道

校对: 开源科学计算

原文及本文遵循: [CC BY-NC 4.0协议]

往期文章

OpenCV:强大的开源计算机视觉库

在Linux中查找已连接网络的WiFi密码

Linux下无法挂载exfat格式的分区

在Linux上如何校验ISO镜像文件

Linux下常用的图形应用下载工具

Linux下使用搜狗输入法键入中文

Linux中那些我们赖以为生的Bash别名

在Linux中使用Bashtop与Bpytop监管系统资源

2020年Linux最佳图形设计软件

喜欢使用Linux办公、学习、hack的朋友们可以点击关注小编,小编将竭力提供更多内容给大家交流~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值