sed 和变量

sed 和变量

我知道这个问题已被问过多次,但该解决方案对我不起作用。

我有 2 个文件:1_all 和 2_ovo。它们都包含一个项目列表。 1_all 包含 2_ovo 中的项目以及其他项目。我需要删除 1_all 中与 2_ovo 中相同的所有项目。这就是我所拥有的:

for i in 2_ovo
   do
sed -i "/$i/d" 1_all
done

因此,从 2_ovo 中获取值并从 1_all 中删除该值。

我知道 sed 中的变量应该用双引号处理,但该命令根本不执行任何操作。如果我用实际值替换 $i ,该值将按预期从文件中删除。有任何想法吗?

答案1

您需要读取该文件才能执行循环。

for i in `cat /path/to/file/2_ovo`
do
    sed -i "/$i/d" 1_all
done

答案2

您可以使用with 选项将文件用作要匹配和反转匹配的文字行列表,而不是从 的sed每一行开始:2_ovogrep-Fxf 2_ovo-v

grep -vFxf 2_ovo 1_all > 3_only_the_rest

相关内容