我有两个文件,file1.txt
包含用逗号分隔的字符串:
1.1.1.1,string1,comment1
7.7.7.7,string3,comment3
2.2.2.2,string2,comment2
88.88.88.88,string4,comment4
999.999,999,999,string5,comment5
第二个文件file2.txt
包含可以出现在 的第一列中的字符串file1.txt
。file1.txt
如果第一列的字符串出现在 中,我需要删除整行file2.txt
。请注意,我不想更改原始文件,但我想将输出放入新文件中。
答案1
为什么不简单地
grep -vffile2 file1
-f FILE: Obtain patterns from FILE, one per line. -v: Invert the sense of matching, to select non-matching lines.
答案2
你可以尝试类似的东西
#!/bin/bash
cat file2.txt | while IFS=, read line; do
sed -i "/$(grep $line file1.txt)/d" file1.txt
done
请注意,这sed -i
将直接更改 file1.txt,但您可以更改命令以sed -i.ibk
保存原始文件的备份副本。
例如
$cat file2.txt
1.1.1.1
7.7.7.7
$cat file1.txt
1.1.1.1,string1,comment1
7.7.7.7,string3,comment3
2.2.2.2,string2,comment2
88.88.88.88,string4,comment4
999.999,999,999,string5,comment5
output
2.2.2.2,string2,comment2
88.88.88.88,string4,comment4
999.999,999,999,string5,comment5