使用 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
我正在尝试为一个文件获取一堆正则表达式(每行一个),然后将这些正则表达式放入类似 /$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