Unix grep命令示例 - 如何在Unix中使用grep命令
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文件。