18

考虑我有以下数据流:

BODY1
attrib1:  someval11
attrib2:  someval12
attrib3:  someval13

BODY2
attrib1:  someval21
attrib2:  someval22
attrib3:  someval23

BODY3
attrib1:  someval31
attrib2:  someval32
attrib3:  someval33

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

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

我试过了

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

4

5 回答 5

23

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
于 2012-11-28T17:14:30.580 回答
18

非常简单的命令:

 bash> grep  "attrib1\|attrib3" <file.name>
attrib1:  someval11
attrib3:  someval13
attrib1:  someval21
attrib3:  someval23
attrib1:  someval31
attrib3:  someval33
于 2014-04-28T09:07:33.857 回答
15

还有 egrep;

egrep "pattern1|pattern2|pattern3" file
于 2013-10-16T05:34:09.677 回答
0

这取决于您进入的外壳。grep -iw 'patter1\|patter2\|pattern3'适用于 bash shell,因为它不适用于 korn shell。对于 korn shell,我们可能不得不尝试grep -e pattern1 -e patter2等等。

于 2013-10-16T05:18:53.280 回答
0

这适用于 GNU grep 2.6.3

grep "attrib[13]"

或者

 grep "^[^0-9]*[13]:"
于 2012-11-28T17:14:49.327 回答