使用grep进行多种搜索模式

amp*_*ent 13 unix grep

考虑我有以下数据流:

BODY1
attrib1:  someval11
attrib2:  someval12
attrib3:  someval13

BODY2
attrib1:  someval21
attrib2:  someval22
attrib3:  someval23

BODY3
attrib1:  someval31
attrib2:  someval32
attrib3:  someval33
Run Code Online (Sandbox Code Playgroud)

我想为每个BODY 提取attrib1和attrib3,即

attrib1:  someval11
attrib3:  someval13
attrib1:  someval21
attrib3:  someval23
attrib1:  someval31
attrib3:  someval33
Run Code Online (Sandbox Code Playgroud)

我试过了

grep 'attrib1\|attrib3'根据这个网站,但没有返回任何内容. grep attrib1grep attrib2返回数据,但仅针对指定的单个模式.

axi*_*iom 21

grep -e 'attrib1' -e 'attrib3' file

man页面:

-e PATTERN, - regexp = PATTERN
使用PATTERN作为模式.这可用于指定多个搜索模式,或用于保护以连字符( - )开头的模式.(-e由POSIX指定.)

编辑: 或者,您可以将模式保存在文件中并使用以下-f选项:

aman@aman-VPCEB14EN:~$ cat>patt
attrib1
attrib3

aman@aman-VPCEB14EN:~$ grep -f patt test
attrib1:  someval11
attrib3:  someval13
attrib1:  someval21
attrib3:  someval23
attrib1:  someval31
attrib3:  someval33
Run Code Online (Sandbox Code Playgroud)


Ste*_*Scm 13

非常简单的命令:

bash> grep  "attrib1\|attrib3" <file.name>
Run Code Online (Sandbox Code Playgroud)

attrib1: someval11 attrib3: someval13 attrib1: someval21 attrib3: someval23 attrib1: someval31 attrib3: someval33


Mik*_*uch 11

也是egrep;

egrep "pattern1|pattern2|pattern3" file
Run Code Online (Sandbox Code Playgroud)

  • 或者 `grep -E "pattern1|pattern2|pattern3" file` (4认同)