如何在下一个sed命令中使用管道的结果?

如何在下一个sed命令中使用管道的结果?,sed,Sed,我想用sed来做这个。我有两个文件: keys.txt: host1 host2 test.txt host1 abc host2 cdf host3 abaasdf 我想使用sed删除test.txt中包含keys.txt中关键字的任何行。因此test.txt的结果应该是 host3 abaasdf 有人能告诉我如何使用sed吗 谢谢,我建议对这个特别是fgrep使用grep,因为没有涉及regexp,所以 fgrep -v -f keys.txt test.txt 很好。对于sed

我想用sed来做这个。我有两个文件:

keys.txt:
host1
host2

test.txt
host1 abc
host2 cdf
host3 abaasdf
我想使用sed删除test.txt中包含keys.txt中关键字的任何行。因此test.txt的结果应该是

host3 abaasdf
有人能告诉我如何使用sed吗

谢谢,

我建议对这个特别是fgrep使用grep,因为没有涉及regexp,所以

fgrep -v -f keys.txt test.txt 
很好。对于sed,这一点非常有效:

sed -i.ORIGKEYS.txt ^-e 's_^_/_' -e 's_$_/d_' keys.txt
sed -f keys.txt test.txt
这会将原来的keys.txt(带有备份)修改为一个sourceable sed脚本。

我建议对这个特别是fgrep使用grep,因为没有涉及regexp,所以

fgrep -v -f keys.txt test.txt 
很好。对于sed,这一点非常有效:

sed -i.ORIGKEYS.txt ^-e 's_^_/_' -e 's_$_/d_' keys.txt
sed -f keys.txt test.txt
这会将原来的keys.txt(带有备份)修改为一个sourceable sed脚本。

fgrep-v-f是最好的解决方案。以下是两个备选方案:

和的组合

fgrep-v-f是最好的解决方案。以下是两个备选方案:

和的组合


这可能适用于GNU sed:

sed 's|.*|/^&\\>/d|' keys.txt | sed -f - test.txt

这可能适用于GNU sed:

sed 's|.*|/^&\\>/d|' keys.txt | sed -f - test.txt

大致类似于如果我使用cat keys.txt | sed。。。取下这把钥匙。我怎么能做到?你就是做不到。sed是有能力的,但AFAIK没有那么有能力。至少对于gnused,它通过脚本中的管道工作,例如:sed的^/;;s_$\ud_uu'keys.txt | sed-f-test.txt.TIL关于@Thor选项,谢谢,但它仍然不是catif I do cat keys.txt | sed。。。取下这把钥匙。我怎么能做到?你就是做不到。sed是有能力的,但AFAIK没有那么有能力。至少对于gnused,它通过脚本中的管道工作,例如:sed的^/;;s_$\ud_u'keys.txt | sed-f-test.txt.TIL关于@Thor选项,谢谢,但它仍然不是cat