使用sed删除未知数量的正则表达式

时间:2015-04-19 09:49:46

标签: bash sed

我正在尝试为一个文件(每行一个)获取一堆正则表达式,然后将这些正则表达式放入类似/$regexp/d的内容中。我这样试试:

while read line;do sed "/$line/d" to_delete.file >> output;done < to_delete.txt 

但即使我更改了分隔符,它也会告诉我“未知命令”。

---编辑

to_delete.txt文件有斜杠,但我已经在挖掘它们,这就是我发现错误的地方。

1 个答案:

答案 0 :(得分:2)

为了避免在正则表达式中/出现问题sed允许使用其他分隔符,因此您可以使用例如sed "\|$line|d"
如果您将脚本放入双引号中,则应该在地址范围和操作之间添加空格,例如"\|$line| d"
但我发现脚本中存在一般错误。每个循环将循环打印到output所有to_delete.file(用正则表达式执行1行)。我想这不是OP想要的东西 如果您想从to_delete.txt中排除to_delete.file的内容,可以通过grep轻松完成

grep -vFf "to_delete.txt" "to_delete.file" > output