linux查找字段相同的命令,Linux grep命令使用详解

原标题:Linux grep命令使用详解

来自:https://www.linuxmi.com

什么是grep?

我们今天要学习的grep实用程序是一个Unix工具,它与egrep和fgrep实用程序属于同一系列。这些都是用于对文件和文本执行重复搜索任务的Unix工具。您可以通过grep命令指定特定搜索条件来搜索文件及其内容以获取有用的信息。

所以他们说grep是全局搜索正则表达式并打印出匹配的行,但这个命令'grep'来自哪里?grep基本上来源于一个名为ed的非常简单和令人尊敬的Unix文本编辑器的特定命令。这是ed命令的用法:

g/re/p

该命令的目的与我们通过grep进行搜索的含义非常相似。此命令获取与特定文本模式匹配的文件中的所有行。

让我们进一步研究grep命令。在本文中,我们将解释grep实用程序的安装,并给出一些示例,通过这些示例,您可以确切地了解如何以及在何种情况下可以使用它。

我们在Ubuntu 18.04 LTS系统上运行了本文中提到的命令和过程。

dc9a3d7bc0dca063c3feb454f579c338.png

安装grep

虽然大多数Linux系统默认使用grep实用程序,但如果您的系统上没有安装它,以下是安装过程:

通过Dash或Ctrl + Alt + T快捷方式打开Ubuntu终端。然后以root身份输入以下命令,以便通过apt-get安装grep:

linuxidc@linuxidc:~$ sudo apt-get install grep

b9633fd77f1c7cea06b418ede9da737a.png

在安装过程中出现y/n选项提示时输入y。之后,grep实用程序将安装在您的系统上。

您可以通过以下命令检查grep版本来验证安装:

linuxidc@linuxidc:~$ grep --version

3ca7734af73486347bc80cadaae06241.png

将grep命令与示例一起使用

grep命令可以通过介绍可以使用它的一些场景来得到最好的解释。这里有一些例子:

搜索文件

如果要搜索包含特定关键字的文件名,可以通过grep命令过滤文件列表,如下所示:

句法:

$ ls -l | grep -i “searchword”

例子:

linuxidc@linuxidc:~$ ls -l | grep -i linuxidc

2e0863bcaffd339fd17d6ac148263457.png

此命令将列出当前目录中包含单词“linuxidc”的文件名的所有文件。

在文件中搜索字符串

您可以通过grep命令从包含特定文本字符串的文件中获取一个句子。

句法:

grep “string” filename

例:

linuxidc@linuxidc:~$ grep 'Ubuntu' linuxidc.txt

8e3671922146954c9add817b9be86f1c.png

我的示例文件linuxidc.txt包含具有字符串“Ubuntu”的句子,您可以在上面的输出中看到该句子。关键字和字符串在搜索结果中以彩色形式显示。

在多个文件中搜索字符串

如果您想从同一类型的所有文件中搜索包含您的文本字符串的句子,grep命令随时为您服务。

语法1:

$ grep “string” filenameKeyword*

语法 2:

$ grep “string” *.extension

例子1:

linuxidc@linuxidc:~$ grep 'Ubuntu' linuxidc*

651f5bf372943e47dae64c14247ae8c7.png

此命令将从包含关键字“linuxidc”的文件名的所有文件中获取包含字符串“Ubuntu”的所有句子。

例2:

linuxidc@linuxidc:~$ grep 'Ubuntu' *.txt

acdc623d9688b1d7bcc1102e96341c96.png

此命令将从所有扩展名为.txt的文件中获取包含字符串“Ubuntu”的所有句子。

在不考虑字符串的情况下搜索文件中的字符串

在上面的示例中,我的文本字符串幸运地与我的示例文本文件中的文本字符串相同。如果我输入了以下命令,我的搜索结果将为nil,因为我的文件中的文本不是以大写单词“Sample”开头的

grep "Sample file" *.txt

让我们告诉grep忽略搜索字符串的情况,并通过-i选项根据字符串打印搜索结果。

语法:

$ grep -i “string” filename

例子:

linuxidc@linuxidc:~$ grep -i 'ubuntu' *.txt

8f810ddc0f7f8166de9d53e1c156b1c9.png

此命令将从所有扩展名为.txt的文件中获取包含字符串“Ubuntu”的所有句子。这不会考虑搜索字符串是大写还是小写。

在正则表达式的基础上搜索

通过grep命令,可以指定带有start和end关键字的正则表达式。输出将是包含指定的起始和结束关键字之间的整个表达式的句子。此功能非常强大,因为您无需在搜索命令中编写整个表达式。

句法:

$ grep “startingKeyword.*endingKeyword” filename

例子:

linuxidc@linuxidc:~$ grep 'Linux.*.Fedora' linuxidc.com.txt

5bc3c604bbc87309224a996d765b8ba5.png

此命令将从我在grep命令中指定的文件中打印包含表达式的句子(从我的startingKeyword开始,到我的endingKeyword结尾)。

在搜索字符串之后/之前显示指定的行数

您可以使用grep命令在文件中的搜索字符串之前/之后打印N行。搜索结果还包括包含搜索字符串的文本行。

密钥字符串后面N行的语法:

$ grep -A 'string' filename

例子:

linuxidc@linuxidc:~$ grep -A 3 -i '专业的Linux系统门户网站' linuxidc.com.txt

这是我的示例文本文件的样子:

b7c6f2174beee9deec272e1858cc2957.png

这就是命令输出的样子:

ca8f25f045656f073d4b55458f9b9e21.png

它从我在grep命令中指定的文件中显示3行,包括包含搜索字符串的行。

密钥字符串前N行的语法:

$ grep -B 'string' filename

您还可以在文本字符串周围搜索N行。这意味着在文本字符串之前的N行和在文本字符串之后的N.

关键字串周围N行数的语法:

linuxidc@linuxidc:~$ grep -A 2 -i '目前Linux公社(LinuxIDC.com)' linuxidc.com.txt

通过本文中描述的简单示例,您可以掌握grep命令。然后,您可以使用它来搜索可能包含文件或文件内容的筛选结果。在您掌握grep命令之后,这节省了大量的时间来浏览整个搜索结果。

如果还有什么疑问及想要咨询的,请在本文下面Linux公社公众号的评论框里提出,谢谢阅读。返回搜狐,查看更多

责任编辑:

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值