grep是一个过滤文本的工具 Linux操作系统 系统。我们可以得到一个特定的文本或寻找一个模式。grep是Linux管理员日常操作使用的工具。我们将在本教程中了解简单的用法类型。Grep可以用来在文件夹中查找单词。Grep的名字来自 /g/r/ep
表情。
在Linux中安装Grep
我们希望并期望大多数现代Linux发行版 默认情况下已安装grep。如果不是的话,就在这里
Ubuntu、Debian:
我们将使用 apt-get
安装命令 grep
工具。
$ sudo apt-get install grep -y
CentOS、Ubuntu:
我们将使用 dnf
或 yum
为了安装 grep
包裹。
$ sudo dnf install grep -y
或者
$ sudo yum install grep -y
简单Grep一些文本 从文本文件
我们从grep的简单用法开始,从文件中获取一些文本。这是我们的文本文件test.txt
httpd-2.4.23.tar.bz2 httpd-2.4.23.tar.bz2.asc mytext.txt newtextfile nmap-7.31.tgz output2 percona-release_0.1-4.xenial_all.deb PNGGRAD8RGB2.PNG PNGGRAD8RGB3.PNG PNGGRAD8RGB4.PNG pnggrad8rgb.jpg pnggrad8rgb.png source.zip ssh_script test.zip thumb.png thumb.pnggrad8rgb.png thumb.thumb.png thumb.thumb.pnggrad8rgb.png thumb.thumb.thumb.png yourcommand
搜索 PNG
在名为 mytext.txt
. 我们将首先提供PNG的名称,我们要搜索,然后文件或输入,我们将搜索。
$ grep PNG mytext.txt

grep搜索整个文件并提取提供文本“PNG”的行。匹配的部分也将以红色或类似颜色突出显示。
搜索字符串 不区分大小写
默认情况下,grep搜索区分大小写,这意味着大小写字符被解释为不同的。如果我们要找一个 主机名 在文件中,大小写并不重要,因此我们将关闭grep的大小写敏感度。我们将提供 -i
用于不区分大小写搜索的选项。
$ grep -i Thumb mytext.txt

正如我们所看到的,关闭区分大小写会为相同的文本产生更多的结果。
用Grep搜索递归
我们现在只搜索了一个文件。如果有数百个具有多级层次结构的文件,则逐个搜索是不可行的。所以递归搜索是最好的解决方案。我们将提供 -r
选项,它是 --recursive
.
$ grep -r This

这将 搜索 从当前路径开始递归向下。如果我们提供一条路径,它将从那里开始,如下所示。在下面的示例中,我们将搜索 This
整个Linux根文件系统中的术语。
$ grep -r This /
用Grep搜索单词
到目前为止,我们一直在找一条短信。但是我们可以搜索一个用空格隔开的词。这将只搜索匹配的整个单词 test
在这种情况下。我们将使用 -w
选项并提供我们要搜索的单词,如下所示。
$ grep -w test mytext.txt
搜索行开始
我们可以用下面的命令寻找一行开始和行结束。我们将使用 ^
作为行开始标记并提供我们要匹配的术语。在下面的示例中,我们从 t
信。
$ egrep ^t mytext.txt
搜索行尾
我们正在寻找以 g
性格。我们期待着行结束后控制字符 克 . 如果有空间,它将无法工作。我们将使用$作为行尾符号,并将字符放在此符号之前。
$ egrep g$ mytext.txt
Grep中的反向匹配
到目前为止,我们已经搜索了现有的术语,但可以搜索不存在的术语。我们可以将此负匹配或反向匹配命名。我们将使用 -v
选择并提供我们不想匹配的术语。在下面的示例中,我们将列出不包含 p
信。
$ grep -v p mytext.txt

我们正在寻找没有 p 性格。这也称为reverse regex,因为我们列出了搜索的负数。
相关文章: Pgrep和Pkill命令教程及Linux示例
在Grep中查找行号
如果我们在查看一些文本的上下两行,我们可以提供要显示的行数。它也会显示周围的线条。我们将使用 -nC
选项,其中包含要列出或显示的相邻行数。在下面的示例中,我们希望在匹配项周围显示一行,并提供1个like -nC1
作为一种选择。
$ grep -nC1 test.zip mytext.txt

仅显示文件名
通常grep会显示文件名和匹配的行。我们只能使用列出文件名 -l
选项。在下面的示例中,我们将列出包含术语的文件 This
.
$ grep -r 'This' -l

这将列出具有此字符串的文件。我们正在递归搜索并列出文件名。
匹配给定的文件扩展名
我们只想grep在C头文件我们怎么能做到这一点?我们必须提供 –包括 带扩展名的参数。
$ grep -r --include *.h 'stdio' -l * /lib

只打印Grep匹配
我们可能只想得到匹配字符串。假设我们需要IP地址,只需要IP地址,其他什么都不需要。 -o 选项仅打印完全匹配的字符串
$ grep -o -E '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}' /var/log/auth.log

egrep命令
Egrep命令无效 grep -E
将扩展grep功能并提供正则表达式支持的版本。Grep有3种不同的模式类型。第一个是已知的基本概念 BRE
第二个扩展称为 ERE
第三个是 Perl PRCE
. 下面我们来看看grep正则表达式支持的一些例子。下面是一些正则表达式运算符。这是我们的示例文本。我们将此文件命名为 myinput
pof tut com poftut.com poftut
? 使前面的项成为可选项,最多匹配一次。
$ egrep "of?" myinput
![图片[9]-Linux Grep命令简介及实例-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2016/12/poftut_img_584fb780cd956.png)
- 使前一项匹配零次或多次
$ egrep "o*" myinput
![图片[10]-Linux Grep命令简介及实例-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2016/12/poftut_img_584fb7a84e086.png)
- 使前一项匹配一次或多次
$ egrep "o+" myinput
![图片[11]-Linux Grep命令简介及实例-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2016/12/poftut_img_584fb7cc0bae0.png)
{n} 使前面的项在n次完全匹配
$ egrep "m{1}" myinput
![图片[12]-Linux Grep命令简介及实例-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2016/12/poftut_img_584fb80b243b4.png)
{n,}使前面的项至少匹配n次
$ egrep "(com){1}" myinput
![图片[13]-Linux Grep命令简介及实例-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2016/12/poftut_img_584fb95fddbed.png)
{,m}生成前面的项 最多匹配m次
$ egrep "(com){,1}" myinput
![图片[14]-Linux Grep命令简介及实例-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2016/12/poftut_img_584fb9b81579a.png)
{n,m}使前面的项在最多m次时至少匹配n个
$ egrep "(com){1,1}" myinput
Grep和操作员
grep中没有专门的grep和操作符,我们将通过将多个grep管道连接在一起来模拟它,如下所示。
$ grep "om" myinput | grep "c"
逻辑运算可以用定义。
相关文章: Nmap输出
Grep或操作员
或者是一个逻辑操作,用于查找提供的项之一。我们将在文件中查找com或o字符串。或定义为 | .
$ grep "com|o" myinput

如果我们想将它与带有正则表达式的egrep一起使用,那么可以使用pipe作为正则表达式grep操作符,如下所示。
$ egrep "(com){1,1}|o" myinput

彩色Grep彩色输出
我们的grep可能会有很多结果。这很难检验。在这里着色将使我们的工作更容易。使grep结果丰富多彩 –颜色
$ grep --color t mytext.txt
排除不需要的字符串
我们可以从搜索中删除一个不需要的字符串,方法是使用下面的两个grep管道。首先,grep删除不需要的字符串。第二,grep是我们正常的搜索。
$ grep -v 'png' mytext.txt | grep 't'
计数字符串出现次数
我们可以计算字符串出现的次数。这将给出匹配字符串的总数。
$ grep -c 'png' mytext.txt
