阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

分享Linux Grep高级用户指南

30次阅读
没有评论

共计 1459 个字符,预计需要花费 4 分钟才能阅读完成。

导读 任何管理 Linux 服务器一段时间的人都熟悉“grep”命令。借助 Linux 的“Everything is a file”理念,grep 对于遍历日志文件,配置文件,检查输出文件中的某些错误以及获取匹配数量至关重要。在本教程中,我将向您展示 grep 的一些高级用法,它们仍然非常有用。这些在手册页中不难找到,但它们只是 grep 默认功能的扩展。
同时搜索多个单词

通常,grep 的用法是这样的:

grep 'pattern' filename

其中 ’pattern’ 是任何给定的模式或匹配的正则表达式。但是,假设您有一个错误日志文件并正在执行例行维护。您希望检查日志文件中是否存在跨越各种源的某些关键字。通常,您必须为每个短语使用单独的 grep 表达式。

但是,我们可以使用“-E”参数轻松使用正则表达式。首先,我们有一个名为“linuxidc-com”的文件,其中包含以下内容:

分享 Linux Grep 高级用户指南

假设我们要在此文件中搜索以下两个短语:

linuxidc
linuxmi

grep -Ew 'linuxidc|linuxmi' linuxidc-com

分享 Linux Grep 高级用户指南

有两个标志:
1.- E 表示我们正在使用扩展正则表达式
2.- w 意味着我们只想匹配整个单词
为了使它更容易,我们可以将“grep -E”替换为“egrep”。所以上面的命令变成:

egrep -w 'linuxidc|linuxmi' linuxidc-com

分享 Linux Grep 高级用户指南

这里是输出:
我们可以根据需要匹配尽可能多的单词。如果你想删除“单词”的要求,而只是想要一个直接的字符串匹配,那么你可以删除“w”参数。

搜索整个目录以查找匹配项并显示文件名

我们通常认为 grep 搜索文件或来自另一个命令的特定输出。但是,我们也可以使用它同时搜索整个文件目录。比如说,你有一堆分散在系统周围的日志文件。毕竟,许多软件包都有自己的日志文件位置。为了方便您,您可以创建一个新文件夹,其中包含指向您感兴趣的所有各种日志文件的符号链接。现在,您可以使用“-R”命令与 grep 一起搜索所有这些内容。首都“R”告诉 grep 包含符号链接。小“r”忽略默认情况下在命令行中找不到的符号链接。

例如,在以下示例中,我们在当前目录中搜索字符串:

grep -r linuxidc .

末尾的点(.)表示当前目录。我们得到以下输出:

分享 Linux Grep 高级用户指南

您可以在下面看到,它还会以递归方式搜索另一个模式匹配:
这对于同时搜索一堆文件非常有用。输出还会显示包含匹配字符串的文件的名称!我个人喜欢这个带有“-R”的解决方案,可以同时搜索一组符号链接,以节省时间。

计算匹配行数

有时您想知道某个关键字出现在 grep 中的次数。例如,如果您在网站文件中搜索某个蜘蛛,则需要计算包含特定用户代理的行数。为此,我们只需添加“-c”参数即可。请记住,这会删除 grep 的常规输出,并且不再显示单个匹配项。例如,没有“-c”参数:

grep rr linuxidc-com

我们得到一个简单的事件列表。加入“-c”:

grep -c rr linuxidc-com

我们得到了行数:如您所见,它不再显示每个事件。

Grep 是一个非常强大的工具,它的功能多年来一直在增加。我们可以创建复杂的正则表达式,甚至可以创建一个表达式来格式化文件的输出,使其更易于阅读。这些高级 grep 使用示例将让您体验可能的内容,并希望您自己深入研究手册!

如果您喜欢高级 grep 命令的这篇文章,请通过社交媒体网络与您的朋友分享。如果您对本教程有任何疑问,请在下面写下评论。谢谢!

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计1459字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中