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

Delete unknown amount of regexps using sed

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

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

但它说我 'unknown command',即使我更改分隔符也是如此。

--- 编辑

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

为避免 / 在正则表达式中出现问题 sed 允许使用另一个分隔符,因此您可以使用例如sed "\|$line|d".
其次,如果将脚本放入双引号中,则应在地址范围和操作之间添加 space,例如"\|$line| d"
但我在剧本中看到了一个普遍的错误。循环将在每个循环中打印到 output all to_delete.file(带有正则表达式的 1 行除外)。我想这不是OP想要的。
如果您想从 to_delete.file 中排除 to_delete.txt 的内容,可以通过 grep

轻松完成
grep -vFf "to_delete.txt" "to_delete.file" > output