前言

grep 功能十分强大,让人爱不释手,但是,正因为功能太过强悍导致 grep 参数十分繁多,让人难以掌握,本文解决的痛点是---如何从繁多的参数中取其精华去其"糟粕",抓住要害,从而事半功倍。

1、grep 简介

grep 是一款强大的文本搜索工具,它能使用特定模式(包括正则表达式)搜索文本,并默认输出匹配行。grep 是 "Globally search a Regular Expression and Print" 的缩写,含义是:全局搜索正则表达式和打印。之所以强调 "全局",是因为它可以同时对多个文件进行搜索。

2、grep 工作方式

grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。

备注:若不指定任何文件名称,或是所给予的文件名为 -,则 grep 命令会从标准输入设备读取数据。

例如:grep ".*error" system.log。该命令将在文件 system.log 中搜索,显示出包含带有字符串 error 的每一行。命令行中的点表示的是 error 之前可以有任意字符,星号指的是点号所表示的任意字符可以有任意个,其中的双引号是可有可无的,但是当语句中包含短语或者空格时就必须加双引号。

3、grep 命令格式

grep命令的常用格式为:

grep [选项] "模式" [文件]

4、grep 命令常用选项

grep1.png

5、grep 命令模式部分

1、直接输入要匹配的字符串

2、使用基本正则表达式,正则表达式主要依赖于元字符。 元字符不代表它们本身的字面意思,它们都有特殊的含义。一些元字符写在方括号中的时候有一些特殊的意思。以下是一些元字符的介绍:

grep2.png

6、grep 命令实战

查找日志文件的 502 错误:

grep -B 3 502 system.log

502.png

7、如何记忆grep的参数?

(1)牢记ABC这三个参数。ABC的含义十分广泛。例如:美国广播公司,英文全称:American Broadcasting Corporation,Inc, 简称ABC,总部在纽约,是美国三大商业广播电视公司之一。中国农业银行,全称:Agricultural Bank Of China,简称ABC,农行,成立于1951年。香蕉人American-Born Chinese,简称 ABC,最初意指出生在美国的华裔人。他们虽然是华人,但不识中文,说一口地道的美国英语。他们自小就受美国文化、美国教育的熏陶,其思维方式、价值观也是完全美国化的,与移民来美的上辈不同。

(2)牢记wc这两个参数。可以联想到wc命令,其用于统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。

(3)还有 or 和 and 两种逻辑。

其实,在grep命令中,有or和and操作符的等价选项,但是并没有or 和 and 这两种操作符。

可以通过使用 '|' 来分割多个pattern,以此实现OR的操作。但是,在某些机器上,要使用-E参数才能够进行逻辑匹配,如下所示:

# 匹配包含字符样式为"a|b"的行
grep "a|b" 
# 匹配包含字符样式为"a"或"b"的行
grep -E "a|b" 

grep -E 选项可以用来扩展选项为正则表达式。 如果使用了grep 命令的选项-E,则应该使用 | 来分割多个pattern,以此实现OR操作。

grep命令本身不提供 and 功能,但是通过这种形式可以实现:

grep 'pattern1.*pattern2' filename

标签: none

添加新评论