我知道在其他问题中,你可以解决"如何从另一个文件2中删除出现在文件1上的行;与:comm -23 file1 file2
和grep -Fvxf file1 file2
但在我的情况下,我有空行分隔我需要保留的数据集,例如:
文件1:
A
B
C
D
E
F
G
H
I
文件2
A
D
F
I
结果我想要什么:
B
C
E
G
H
解决方案可以是bash或csh。
感谢
使用awk
,请尝试以下操作一次。
awk 'FNR==NR{arr[$0];next} !NF || !($0 in arr)' file2 file1
解释:添加对上述代码的详细解释。
awk ' ##Mentioning awk program from here.
FNR==NR{ ##Checking if FNR==NR which will be TRUE when file2 is being read.
arr[$0] ##Creating array with index of $2 here.
next ##next will skip all further statements from here.
}
(!NF || !($0 in arr)) ##If line is empty OR not in arr then print it.
' file2 file1 ##Mentioning Input_file names here.