如何检查file1第一列的字符串是否存在于file2中?

如何检查file1第一列的字符串是否存在于file2中?

我有两个文件,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.txtfile1.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

相关内容