grep的
我们将用来处理正则表达式的主要程序是我们的老朋友, grep的. “grep”这个名字实际上来源于短语“全局正则表达式打印”,所以我们可以看到 grep的 与正则表达式有关。 在本质上, grep的 在文本文件中搜索与指定正则表达式匹配的出现文本,并输出包含与标准输出匹配的任何行。
到目前为止,我们已经使用了 grep的 使用固定字符串,如下所示:
[我@linuxbox ~]$ ls /usr/bin | 压缩包
[我@linuxbox ~]$ ls /usr/bin | 压缩包
这将列出目录中的所有文件 / usr / bin 名称包含子字符串“zip”的目录。
grep的 程序以这种方式接受选项和参数:
grep [选项] 正则表达式 [文件...]
哪里 正则表达式 是一个正则表达式。
这是常用的列表 grep的 opţiuni:
表 19-1:grep 选项
选项说明
选项说明
-i 忽略大小写。 不区分大小写字符。 也可以指定 --忽略大小写.
-v 反转匹配。 一般, grep的 打印包含匹配项的行。
此选项导致 grep的 打印不包含匹配项的每一行。 也可以指定 --反转匹配.
-c 打印匹配(或不匹配,如果 -v 选项也被指定)而不是行本身。 也可以指定 - 数数.
-l 打印包含匹配项而不是行本身的每个文件的名称。 也可以指定 --带匹配的文件.
-L 与 -l 选项类似,但仅打印不包含匹配项的文件名。 也可以指定--files-without-match。
-n 用文件中的行号作为每个匹配行的前缀。 也可以指定 --line-number。
-h 对于多文件搜索,禁止输出文件名。 也可以指定 --无文件名.
为了更充分地探索 grep的,让我们创建一些文本文件进行搜索:
grep的
[我@linuxbox ~]$ ls /bin > dirlist-bin.txt [我@linuxbox ~]$ ls /usr/bin > dirlist-usr-bin.txt [我@linuxbox ~]$ ls /sbin > 目录列表-sbin.txt [我@linuxbox ~]$ ls /usr/sbin > dirlist-usr-sbin.txt [我@linuxbox ~]$ ls 目录列表*.txt
dirlist-bin.txt dirlist-sbin.txt dirlist-usr-sbin.txt dirlist-usr-bin.txt
[我@linuxbox ~]$ ls /bin > dirlist-bin.txt [我@linuxbox ~]$ ls /usr/bin > dirlist-usr-bin.txt [我@linuxbox ~]$ ls /sbin > 目录列表-sbin.txt [我@linuxbox ~]$ ls /usr/sbin > dirlist-usr-sbin.txt [我@linuxbox ~]$ ls 目录列表*.txt
dirlist-bin.txt dirlist-sbin.txt dirlist-usr-sbin.txt dirlist-usr-bin.txt
我们可以像这样对我们的文件列表执行简单的搜索:
[我@linuxbox ~]$ grep bzip 目录列表*.txt
目录-bin.txt:bzip2 目录-bin.txt:bzip2recover
[我@linuxbox ~]$ grep bzip 目录列表*.txt
目录-bin.txt:bzip2 目录-bin.txt:bzip2recover
在这个例子中, grep的 在所有列出的文件中搜索字符串 压缩包 并在文件中找到两个匹配项 目录-bin.txt. 如果我们只对包含匹配项的文件列表而不是匹配项本身感兴趣,我们可以指定 -l 选项:
[我@linuxbox ~]$ grep -l bzip 目录列表*.txt
目录-bin.txt
[我@linuxbox ~]$ grep -l bzip 目录列表*.txt
目录-bin.txt
相反,如果我们只想查看不包含匹配项的文件列表,我们可以这样做:
[我@linuxbox ~]$ grep -L bzip 目录列表*.txt
目录-sbin.txt 目录-usr-bin.txt 目录-usr-sbin.txt
[我@linuxbox ~]$ grep -L bzip 目录列表*.txt
目录-sbin.txt 目录-usr-bin.txt 目录-usr-sbin.txt