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

How to remove the lines which appear on file 1 from another file 2 KEEPING empty lines?

我知道在其他问题中,您解决了“如何从另一个文件 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[[=10=]];next} !NF || !([=10=] 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[[=11=]]              ##Creating array with index of  here.
  next                 ##next will skip all further statements from here.
}
(!NF || !([=11=] in arr))  ##If line is empty OR not in arr then print it.
' file2 file1          ##Mentioning Input_file names here.