比较2个文件,只删除一次重复的行

时间:2015-09-25 11:50:14

标签: linux shell awk

我需要从文件1中删除与文件2相比的重复值。当我试图这样做时,我面临着问题,因为文件2(c,g)中的值也在文件1中的[b]下,这些也被删除了。但我的要求是只删除[a]下的那些。感谢

this.props.handleDeleteClick

$ less file 1
[a]
c
g
d
[b]
c
g
h

1 个答案:

答案 0 :(得分:3)

您可以使用此awk命令:

awk '/^\[.*?\]/{s=$0} FNR==NR{seen[s,$0]++; next} !seen[s,$0]' file2 file1
[b]
c
g
h

此awk正在使用关联数组seen,其中[...]内的值为复合键,所有后续记录均为s,$0

在浏览file2时,它会将这些值保存在数组中,并且在遍历file1时,它将只打印seen中不可用的那些值,从而避免重复。