考虑我有以下数据流:
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 attrib1
和 grep attrib2
确实返回数据,但仅针对指定的单个模式。
grep -e 'attrib1' -e 'attrib3' file
来自
man
页面:
-e 模式,--regexp=模式
使用 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
非常简单的命令:
bash> grep "attrib1\|attrib3" <file.name>
attrib1: someval11
attrib3: someval13
attrib1: someval21
attrib3: someval23
attrib1: someval31
attrib3: someval33
还有egrep;
egrep "pattern1|pattern2|pattern3" file
这适用于 GNU grep 2.6.3
grep "attrib[13]"
或
grep "^[^0-9]*[13]:"
这取决于您所在的 shell。
grep -iw 'patter1\|patter2\|pattern3'
适用于 bash shell,而它不适用于 korn shell。对于 korn shell,我们可能必须尝试 grep -e pattern1 -e patter2
等等。
另外,如果有多个模式,请务必将 e 选项作为最后一个选项。例如,
grep -iwe '那个' -e '那个' -e '然后' -e '那些'文本
或
grep -iwe '那个' -iwe '那个' -e '然后' -e '那些' 文本 或者 grep -wie '那个' -wie '那个' -wie '然后' -wie '那些'文本
有效!但是,如果你把 e 放在第一位,就像
grep -eiw '那个' -e '那个' -e '然后' -e '那些'文本
它返回一个错误。