如何从两个文件中获取两行无重复的文件的输出?

时间:2018-07-06 10:25:03

标签: bash

以以下格式提供两个文件(以便任何文件都可以重复):

file1 (仅包含数字的文件),例如:

  

10
  40
  20
  10
  10

file2 (仅包含数字的文件)例如:

  

30
  40
  10
  30
  0

如何打印文件的内容,以便从任何文件中删除重复项。

例如,根据上面2个文件的输出,必须为:

  

10
   40
   20
  30
  40
  10
  0

注意:在输出中,我们可以得到重复项(最多是2个数字,出现两次),但是,从任何文件中,我们都将获得不重复的内容!

如何仅使用一个命令使用sort , uniq , cat进行操作?

即,类似这样的内容:cat file1 file2 | sort | uniq(但是,此命令当然不好-它不能解决问题,仅用于解释我所说的“仅使用一个命令”的意思)。

我很乐意听听您的想法:)

1 个答案:

答案 0 :(得分:2)

如果我正确理解了这个问题,则此awk应该在保留顺序的同时做到这一点:

awk 'FNR==1{delete a}!a[$0]++' file1 file2

如果您不需要保留订单,可以很简单:

sort -u file1; sort -u file2 

如果您不想使用列表(;),也可以选择以下方式:

cat <(sort -u file1) <(sort -u file2)