Unix 对多个搜索模式使用grep
假设我有以下数据流:Unix 对多个搜索模式使用grep,unix,grep,Unix,Grep,假设我有以下数据流: BODY1 attrib1: someval11 attrib2: someval12 attrib3: someval13 BODY2 attrib1: someval21 attrib2: someval22 attrib3: someval23 BODY3 attrib1: someval31 attrib2: someval32 attrib3: someval33 我只想为每个实体提取attrib1和attrib3,即 attrib1:
BODY1
attrib1: someval11
attrib2: someval12
attrib3: someval13
BODY2
attrib1: someval21
attrib2: someval22
attrib3: someval23
BODY3
attrib1: someval31
attrib2: someval32
attrib3: someval33
我只想为每个实体提取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'文件
从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
这在GNU grep 2.6.3中起作用
grep "attrib[13]"
或
这取决于你所处的环境
grep-iw'patter1\| patter2\| patter3'
适用于bash shell,而不适用于korn shell。对于korn shell,我们可能必须尝试grep-e pattern 1-e pattern 2
等等
egrep "pattern1|pattern2|pattern3" file
非常简单的命令:
bash> grep "attrib1\|attrib3" <file.name>
attrib1: someval11
attrib3: someval13
attrib1: someval21
attrib3: someval23
attrib1: someval31
attrib3: someval33
bash>grep“attrib1\| attrib3”
属性1:someval11
属性3:someval13
属性1:someval21
属性3:someval23
属性1:someval31
属性3:someval33
这并不是说它解决了您的问题,但如果您的正则表达式是attrib[13]
,grep可能会更容易理解,更快地找到。使公共部分更长通常更好。如果属性1和属性3之间没有公共模式怎么办?如果它们被命名为完全不同的东西?在真实的例子中,我的attrib1被称为foo,attrib3被称为bar…那么attrib[13]
技巧将不起作用。我不明白——它必须是grep吗?axiom演示了如何做到这一点,但为什么不使用awk呢?我是唯一一个觉得这类任务更简单的人吗。我正在使用SunOS@foampile您可以尝试查看-f
选项是否有用。另外请注意,对于您的示例,grep'attrib1\| attrib3'
也应该可以正常工作。如果attrib1和3之间没有公共模式呢?如果它们被命名为完全不同的名称?您在寻找什么,在第一个单词的末尾加1或3,后面加一个冒号?您使用的shell与grep
external命令支持的参数没有直接关系。或者grep-E“pattern1 | pattern2 | pattern3”文件
bash> grep "attrib1\|attrib3" <file.name>
attrib1: someval11
attrib3: someval13
attrib1: someval21
attrib3: someval23
attrib1: someval31
attrib3: someval33