Linux 中 Grep 命令的常见示例,很全面

Linux 中 Grep 命令的常见示例,很全面,第1张

Grep 是一个强大的 UNIX 命令,可让您在文件内容中搜索各种参数。当您进行故障排除或调试时,它特别有用。

grep 命令有大量的选项和用例。您可能永远不需要或使用所有这些。但是,您最终会在大多数情况下使用少数几个 grep 命令。

本文列出了最常见的 grep 命令和快速示例:

命令示例:

描述 :不区分大小写的搜索

命令示例:

描述 :匹配后显示 n 行

命令示例:

描述 :在匹配前显示 n 行

命令示例:

描述 :在匹配前后显示 n 行

命令示例:

描述 :显示不匹配的行

命令示例:

描述 :计算匹配行数

命令示例:

描述 :仅显示文件名

命令示例:

描述 :匹配确切的单词

命令示例:

描述 :匹配正则表达式模式

命令示例:

描述 :搜索二进制文件

命令示例:

描述 :递归搜索目录

您可能已经知道要在文件中搜索特定文本或模式,您必须像这样使用 grep:

让我们看看 grep 命令的几个常见用例。

默认情况下,使用 grep 进行的搜索区分大小写,-i您可以使用以下选项忽略大小写匹配:

这样,grep 将返回与 和 匹配的Holmes行holmes。

默认情况下,您只会看到匹配的行,但是,当您对某些问题进行故障排除时,在匹配行之前和/或之后查看几行会有所帮助。

您可以使用-A来显示匹配行之后的行。

下面的命令将显示匹配的行以及匹配后的 5 行。

同样,您可以使用该-B选项在匹配行之前显示行。

下面的命令将在匹配行之前显示 5 行以及匹配行。

我最喜欢的是该选项-C,因为它显示了匹配行之前和之后的行。

下面的命令将显示匹配行之前的 5 行、匹配行和 matchine 行之后的 5 行。

您可以使用 grep 显示与给定模式不匹配的所有行。此“反转匹配”与以下-v选项一起使用:

您可以组合-i和-v选项。

-c您可以使用选项获取与模式匹配的行数,而不是显示匹配的行。这是小写的c。

您可以结合-cand-v选项来获取与给定模式不匹配的行数。您当然可以使用不区分大小写的选项-i。

要显示匹配行的行号,您可以使用该-n选项。

您可以对反向搜索执行相同的 *** 作。

您可以提供多个文件供 grep 搜索。

这可能有效,但更实际的示例是搜索特定类型的文件。例如,如果您只想在 shell 脚本中查找字符串(以 sh 结尾的文件),您可以使用:

您可以使用 grep option执行递归搜索-r。它将在当前目录及其子目录中的所有文件中搜索给定的模式。

默认情况下,grep 显示匹配的行。如果您对多个文件运行了搜索,并且只想查看哪些文件包含该字符串,则可以使用该-l选项。

假设您想查看哪些 Markdown 文件包含“手册”一词,您可以使用:

默认情况下,grep 将显示包含给定字符串的所有行。你可能并不总是想要那个。如果您正在搜索单词“done”,它还会显示包含“doner”或“abandoned”字样的行。

要使 grep 仅搜索完整的单词,您可以使用以下选项-w:

这样,如果您搜索单词“done”,它只会显示包含“done”的行,而不是“doner”或“abandoned”。

您可以使用正则表达式模式为您的搜索提供超级动力。有一个允许使用正则表达式模式的专用选项-e和-E一个允许使用扩展正则表达式模式的选项。

您可以在同一个 grep 搜索中搜索多个模式。如果要查看包含一种模式或另一种模式的行,可以使用 OR 运算符|。

您可以将多个模式与 OR 运算符一起使用。

AND 运算符没有特定选项。为此,您可以多次使用 grep 和管道重定向。

Grep 默认忽略二进制文件。-a您可以使用该选项使其在二进制文件中搜索,就好像它是文本文件一样。

1、-v是grep排除的参数,例如查询除了包含ABC的行,例如cat atxt|grep -v 'ABC'

2、^代表行首,$代表行尾。 ^$是空行的意思

3、^#表示首字母为#的行,linux里的文件,#号开头一般都是注释内容

4、grep -v '^$' /etc/rsyslogconf | grep -v '^#'

查询/etc/rsyslogconf文件,但是不包含空行和注释行

楼主,你的提问是什么意思呢?我没太听明白。但是如果你想要找出不以0820开头的行,可以用 -v 选项。

如果楼主是这个意思,那么你的命令得改改。

一个regular expression 代表 一个 pattern,

[0820] 是一行中任意一个位置包含 0,8,2,0 中任意一个字符, 的这个pattern;

^[0820] 是一行中开头包含 0, 8, 2, 0 中任意一个字符, 的这个pattern;

至于pattern [^0820],我也想不明白,敬请高人指点。

不过想找出不以0820开头的行,我的做法是:

xs220@Zealot:~/test> grep ^0820 file1

0820:dfgdfgdfgsd

xs220@Zealot:~/test> grep -v ^0820 file1

0821:dfgdfgdfgsdf

0822:dfgdfgdfgsdf

0823:dfgdfgdfgsdf

PS楼主的file1貌似都是空格开头的。清确认是无空格我给出的命令才好用。

Linux命令行是一种在Linux *** 作系统中通过文本界面进行交互的方式。它是一种强大的工具,用于执行各种系统管理和配置任务,以及执行命令行工具和应用程序。

以下是一些常用的Linux命令行 *** 作:

文件和目录 *** 作:

ls:列出当前目录下的文件和目录。

cd:切换目录。

mkdir:创建新目录。

rm:删除文件或目录。

cp:复制文件或目录。

mv:移动文件或目录。

文件查看和编辑:

cat:查看文件内容。

grep:在文件中搜索指定的字符串。

less:按页查看文件内容。

vi或nano:文本编辑器,用于编辑文件内容。

系统管理:

sudo:以超级用户身份执行命令。

apt或yum:包管理器,用于安装、更新和删除软件包。

systemctl:用于管理系统服务。

top:显示系统进程和资源使用情况。

网络管理:

ifconfig:显示网络接口的配置信息。

ping:测试与目标主机之间的网络连接。

ssh:通过安全的方式远程登录到其他主机。

scp:在本地主机和远程主机之间复制文件。

以上就是关于Linux 中 Grep 命令的常见示例,很全面全部的内容,包括:Linux 中 Grep 命令的常见示例,很全面、linux中“grep -v '^$' /etc/rsyslog.conf | grep -v '^#'”是什么意思、grep 不匹配行首等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9573028.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存