如何根据字符串行对输出进行过滤?

时间:2014-05-07 13:51:28

标签: linux shell awk sed ash

我有以下输出

$ mycommand
1=aaa
1=eee
12=cccc
15=bbb

我有一个字符串str,其中包含:

eee
cccc

我想只显示字符串行中包含字符串的行

所以我的出局将是:

$ mycommand | use_awk_or_sed_or_any_command
1=eee
12=cccc

2 个答案:

答案 0 :(得分:2)

如果您将字符串存储在文件中,则可以grep使用-f选项:

$ cat  search
eee
cccc

$ grep -wf search file
1=eee
12=cccc

如果您的字符串包含-F.等特殊字符,则可能还需要$选项。

答案 1 :(得分:2)

说出你的命令是echo -e "1=aaa\n1=eee\n12=cccc\n15=bbb",你可以做到

echo -e "1=aaa\n1=eee\n12=cccc\n15=bbb" | grep -wE "$(sed  'N;s/\n/|/' <<<"$str")"

sed命令只是用\n替换换行符|grep -E(用于扩展正则表达式)用于分隔多个模式。这意味着grep将打印与 <{em> eee cccc匹配的行。 w确保匹配是整个单词,因此eeeeee之类的内容不会匹配。