sed 删除匹配包含斜杠的变量值的字符串

sed delete string matching a variable value containing slashes

我正在尝试使用 sed 来清理列表。 $salvation 中出现的任何行都应从已设置的 $naughtyList 中删除。

我有;

$ echo "$naughtyList"
ONE/1/one
TWO/2/two
THREE/3/three
FOUR/4/four
FIVE/5/five

和;

$ echo "$salvation"
TWO/2/two
FOUR/4/four

问题出在斜杠字符上。我在尝试时无法逃脱它们;

for line in $(echo $salvation); do
naughtyList=$(echo $naughtyList | sed "/$line/d")
done
sed: -e expression #1, char 6: unknown command: `2'
sed: -e expression #1, char 7: unknown command: `4'

有没有办法传递$line,或者我必须修改输入模式?

提前致谢。

最好在这里使用 grep -f 进程替换:

grep -vFf <(echo "$salvation") <(echo "$naughtyList")
ONE/1/one
THREE/3/three
FIVE/5/five

要更新 naughtyList 变量,请使用:

naughtyList=$(grep -vFf <(echo "$salvation") <(echo "$naughtyList"))