Unix grep命令示例 - 如何在Unix中使用grep命令

时间:2020-07-27 12:59:45  来源:igfitidea点击:

UNIX Grep命令从文件搜索文本模式并返回匹配行和文件名。
在本教程中,我们将查看一些有用的UNIX Grep命令示例我们应该熟悉UNIX/Linux管理员。

从给定文件中搜索文本模式

Grep命令在UNIX中的基本用法是从给定文件中搜索给定文本模式。

grep 'text pattern' filename

例子

grep 'unix admin' file.txt

Grep命令将搜索File.txt中的“UNIX管理”,并将返回匹配的每一行。

Grep不区分大小写搜索

默认情况下,UNIX中的Grep命令区分大小写。
如果我们想执行不区分大小写搜索,请使用Grep命令使用-i选项,以便将忽略大小写。

例子

grep -i 'unix admin' file.txt

同样,Grep命令将搜索行包含“unix admin”一词,但此时间grep命令将忽略大小写,因为我们使用了-i选项。
所以匹配简单和大写UNIX的行将返回。

搜索多个字符串模式

使用-e选项,我们可以指定多个文本模式或者字符串。

grep -e 'string1' -e 'string2' filename

例子

grep -e 'linux' -e 'unix' file.txt

该命令将返回包含“UNIX”或者“Linux”的行。
这类似于逻辑或者运算符。

我们也可以添加-i选项,以便忽略案例

grep -i -e 'linux' -e 'unix' file.txt

使用less命令读取结果。

如果我们正在搜索大文件,那么搜索结果可能很长。
在这种情况下,将输出发送到较少的命令,以便更容易读取。
使用UNIX Grep具有较少的命令,特别是如果我们正在读取大型日志文件非常有用。

例子

grep -i kernel /var/log/messages | less

如上示例,我在/var/log/messages文件中搜索了“kernel”这个词。
匹配线路太多,但使用较少的命令我可以使用箭头键滚动结果。

反转匹配 - 返回非匹配行

Option -V在Unix Grep命令中返回与给定文本模式不匹配的所有行。

例子

grep -v '/sbin/nologin' /etc/passwd

上面的示例将输出不包含模式'/sbin/nolog'的/etc/passwd文件中的所有行。

输出重定向

就像其他UNIX命令一样,我们可以将Grep搜索结果发送给文本文件而不是打印到终端窗口。

grep 'text' file.txt >> outputfile

返回行数

使用unix中的-c选项grep命令将返回行计数而不是行。
使用-v选项计数非匹配线。

例子

grep -c '/bin/bash' /etc/passwd

上面的例子将打印/etc/passwd文件中包含/bin/bash的匹配线的计数

显示行号码

如果我们打印每个匹配线的行号,这将是非常有帮助的。
UNIX GREP -N选项将显示每个匹配行的行号。

grep -n root /etc/

递归地将所有文件放在目录中

我们查看的所有示例到现在,我们在一个文件中搜索文本模式。
但是,UNIX中的Grep命令还可以在给定文件夹中的所有文件上搜索文本模式以及使用-r选项的该文件夹的子文件夹。
这我们称为递归Grep搜索。

例子

grep -R unix /etc/

Grep命令将在/etc目录中的所有文件上递归搜索单词unix。
两个行和文件名都将返回。

仅显示文件名

何时递归Grep在目录中搜索,输出将返回匹配的行和行所属文件的名称。
但是,如果我们只想要文件名,请使用-l选项。

例子

grep -R -l unix /etc/

该命令将返回与文本模式UNIX匹配的/etc目录中的所有文件。

返回包含不匹配的文件

另一个有用的选项是-l选项,它返回与给定文本模式不匹配的所有文件。

例子

grep -R -i -L error /var/log/

该命令将返回任何不包含/var/log目录中的字符串错误的文件。

搜索一行的开始

使用插入符号(^)符号,我们可以搜索一条线的开头。

例子

grep "^soap" /etc/php.ini

UNIX Grep命令将在PHP.ini文件中搜索LINE以SOAP开头。

linux搜索以某个单词结尾的行

使用Text模式的Dollar($)符号结尾我们可以搜索一行的给定文本图案结尾。

例子

grep "nologin$" /etc/passwd

Grep命令将使用/etc/passwd文件中的字符串'nolin'搜索行结束。

搜索以某个单词开始的行

在文本第十个之前使用backslash droun-pers-pers-pers-pers,我们可以搜索单词的开始。

例子

grep '\<dir' /etc/php.ini

根据上图,UNIX中的Grep命令将返回任何行PHP.ini文件如果该行包含一个或者多个单词以下面的dir,则屏幕截图显示。

搜索结尾

在文本模式的末尾使用backslash大于(>),我们可以搜索单词的结尾。

例子

grep 'un\>' /etc/passwd

如果行包含一个或者多个单词以下面的屏幕截图显示,则Grep将返回任何行Passwd文件。