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

标签 sed

我想使用 sed 来做到这一点。我有 2 个文件:

keys.txt:
host1
host2

test.txt
host1 abc
host2 cdf
host3 abaasdf

我想使用sed删除test.txt中包含keys.txt中关键字的任何行。所以test.txt的结果应该是

host3 abaasdf

有人可以告诉我如何使用 sed 做到这一点吗?

谢谢

最佳答案

我建议使用 grep (尤其是 fgrep 因为不涉及正则表达式),所以

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 就地修改 - 带备份 - 为可获取的 sed 脚本。)

关于sed - 如何在下一个 sed 命令中使用管道的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12607101/

相关文章:

bash - 使用 sed 提取行/文件名的中间部分

regex - 在文件中查找特定文本并用其他文本包裹

c - 解析要上传到 Google 日历的时间表

linux - 在 linux 下搜索和替换?

linux - 删除所有在 linux 中有 'nth' 逗号的东西

linux - Sed,在模式匹配后插入一行并忽略任何以#开头的注释行

linux - 以下 "top"命令: top -p `pgrep process-name | tr "\\n" "," | sed 's/,$//' `的语法简单解释是什么

bash - sed 中的命令替换

linux - sed:删除包含字符类的整个单词

sed - 查找并替换为相同的通配符