仅删除两个文件之间精确数量的重复匹配

问题描述 投票:0回答:1

我想获取两个具有冗余条目的文件之间的剩余差异。

 File1.txt:
Data1
Data1
Data2
Data2
Data3
Data3
Data3
Data3
Data4
Data5
Data6
Data6


and 

File2.txt

Data1
Data2
Data2
Data3
Data3
Data4
Data5
Data6

Finalfile.txt
Data1
Data3
Data3
Data4
Data6

换句话说:如果某个条目在文件 1 中出现 n 次,在文件 2 中出现 m 次,则最终文件应包含 n-m 个条目。 即:看到 File1.txt 中有四个 Data3 条目,而 File2.txt 中只有两个条目,因此 Finalfile.txt 出现了 2 次 Data3

我已经尝试过了

grep -v -f File1.txt File2.txt > Finalfile.txt but it give the absolute differences.

bash awk grep duplicates compare
1个回答
0
投票

您可以使用这个2遍

awk
解决方案:

awk '
NR == FNR {
   ++fq[$1]
   next
}
{
   --fq[$1]
}
END {
   for (s in fq)
      for (i = 1; i <= fq[s]; ++i)
         print s
}' file1 file2

Data1
Data3
Data3
Data6
© www.soinside.com 2019 - 2024. All rights reserved.