如何从另一个文件2中删除出现在文件1上的行保持空行



我知道在其他问题中,你可以解决"如何从另一个文件2中删除出现在文件1上的行;与:comm -23 file1 file2grep -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.

相关内容

  • 没有找到相关文章

最新更新