sed删除不使用cat变量

pok*_*ero 1 bash sed

我有一个名为test-domain的文件,其内容包含100.am行.

当我这样做时,100.am的行将从测试域文件中删除,如预期的那样:

for x in $(echo 100.am); do sed -i "/$x/d" test-domain; done
Run Code Online (Sandbox Code Playgroud)

但是,如果不是echo 100.am,我从名为unwanted-lines的文件中读取每一行,它不起作用.

for x in $(cat unwanted-lines); do sed -i "/$x/d" test-domain; done
Run Code Online (Sandbox Code Playgroud)

这是即使不想要的线条唯一内容是一条线,用确切内容100.am.

如果你在变量中使用echo,有没有人知道为什么sed删除行有效,但如果你使用cat则没有

Ner*_*elu 5

fgrep -v -f unwanted-lines test-domain > /tmp/Buffer
mv /tmp/Buffer test-domain
Run Code Online (Sandbox Code Playgroud)

在这种情况下,由于shell中的多次调用(效率低下并且使用了大量的资源),sed并不感兴趣.仍然使用sed的方法是预加载要删除的行,并根据这个预加载的信息进行搜索,但在这种情况下与fgrep相比非常重要