我有以下输出
$ mycommand
1=aaa
1=eee
12=cccc
15=bbb
我有一个字符串str
,其中包含:
eee
cccc
我想只显示字符串行中包含字符串的行
所以我的出局将是:
$ mycommand | use_awk_or_sed_or_any_command
1=eee
12=cccc
答案 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
之类的内容不会匹配。