Bash - 从一个文件中删除行,同时迭代另一个文件中的行

adb*_*bar 3 unix linux bash shell sed

我有两个文件.

file.txtdelete.txt

file.txt 包含以下内容:

/somedirectory/
/somedirectory2/somefile.txt
/anotherfile.txt
Run Code Online (Sandbox Code Playgroud)

delete.txt 包含:

/somedirectory/
/somedirectory2/somefile.txt
Run Code Online (Sandbox Code Playgroud)

我需要删除其中file.txt包含的行delete.txt

cat file.txt 应该导致:

/anotherfile.txt
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尝试过这个没有运气:

while read p; do
    line=$p;
    sed -i '/${line}/d' file.txt;
done < delete.txt
Run Code Online (Sandbox Code Playgroud)

我没有收到任何错误,它只是不编辑我的file.txt文件.我用a测试了while循环,echo ${line}它在该场景中按预期工作.

有什么建议?

注意:即使我从文件中取出正斜杠,上面的while循环也无法按预期工作.

Zum*_*rio 5

用一个简单的grep:

grep -vFxf  delete.txt file.txt > temp.txt && mv temp.txt file.txt 
Run Code Online (Sandbox Code Playgroud)