grep/egrep

grep/egrep

grep一般格式为:

grep [选项] 基本正则表达式 [文件]

这里基本正则表达式可为字符串。


(1)输入字符串参数时,最好将其用双引号括起来。例如:"mystring"

(2)在调用变量时,也应该使用双引号,诸如: grep "$MYVAR" 文件名

(3)在调用模式匹配时,应使用单引号。例:grep '48[34]' data.txt


常用的grep选项有:

-c 只输出匹配行的计数。

-i 不区分大小写(只适用于单字符)。

-h 查询多文件时不显示文件名。

-l 查询多文件时只输出包含匹配字符的文件名。

-n 显示匹配行及行号。

-s 不显示不存在或无匹配文本的错误信息。(屏蔽错误提示信息)

-v 显示不包含匹配文本的所有行。

-w或在抽取字符串后加\ >      精确匹配

[]  匹配模式范围,括号内都是或者关系,顺序不分先后,也可写成A-Z 这样的范围的形式

[^] 不匹配的模式范围

.  点--匹配任意字符

\{n\} 匹配n次  例: '5\{3\}'  匹配连续3个5

\{n,\}  匹配至少n次

\{n,m\} 匹配n-m次

-E 或者匹配

特殊字符  如$ . ' " * [] ^ | \ + ? ,必须在特定字符前加\。


使用grep匹配“与”或者“或”模式


结合使用^和$可查询空行。使用- n参数显示实际行数

grep -v ^$ text  //去除text中所有空行后再显示


补充说明:

参数 -1 -A1 -B1

1. grep -A1 keyword filename


找出filename中带有keyword的行,输出中除显示该行外,还显示之后的一行(After 1)


2. grep -B1 keyword filename


找出filename中带有keyword的行,输出中除显示该行外,还显示之前的一行(Before 1)


3. grep -1 keyword filename


找出filename中带有keyword的行,输出中除显示该行外,还显示之前的一行(After 1)和显示之后的一行(After 1)




egrep

以一个文件作为保存的字符串,然后将之传给egrep作为参数,为此使用- f开关。

使用文件中的每一行作为正则表达式进行匹配

# cat egrep01

s5

s6

#



# ll | egrep -f egrep01

-rwxrwSrwt 1 root root  166 Feb  6 17:53 s5

-rwxrwSrwt 1 root root   56 Feb  7 08:53 s6



grep -ir "hima_install_syslog" *