考虑我有以下数据流:
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
我试过
根据{{3}}, grep 'attrib1\|attrib3'
但是没有返回任何内容。 grep attrib1
和grep attrib2
会返回数据,但仅针对指定的单一模式。
答案 0 :(得分:19)
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
答案 1 :(得分:11)
非常简单的命令:
bash> grep "attrib1\|attrib3" <file.name>
attrib1: someval11
attrib3: someval13
attrib1: someval21
attrib3: someval23
attrib1: someval31
attrib3: someval33
答案 2 :(得分:10)
也是egrep;
egrep "pattern1|pattern2|pattern3" file
答案 3 :(得分:0)
这适用于GNU grep 2.6.3
grep "attrib[13]"
或
grep "^[^0-9]*[13]:"
答案 4 :(得分:0)
这取决于你所使用的shell。 grep -iw 'patter1\|patter2\|pattern3'
适用于bash shell,因为它在korn shell上不起作用。对于korn shell,我们可能需要尝试grep -e pattern1 -e patter2
等等。