问题:
需要比较两个文件,
从第一个文件中删除副本
然后将file1的行追加到file2
举例说明
假设这两个文件是test1和test2。

$ cat test2
www.xyz.com/abc-2
www.xyz.com/abc-3
www.xyz.com/abc-4
www.xyz.com/abc-5
www.xyz.com/abc-6

测试1是
$ cat test1
www.xyz.com/abc-1
www.xyz.com/abc-2
www.xyz.com/abc-3
www.xyz.com/abc-4
www.xyz.com/abc-5

比较test1和test2并从test1中删除重复项
所需结果:
$ cat test1
www.xyz.com/abc-1

然后将这个test1数据添加到test2中
$ cat test2
www.xyz.com/abc-2
www.xyz.com/abc-3
www.xyz.com/abc-4
www.xyz.com/abc-5
www.xyz.com/abc-6
www.xyz.com/abc-1

尝试的解决方案:
join -v1 -v2 <(sort test1) <(sort test2)

导致了这个(那是错误的输出)
$ join -v1 -v2 <(sort test1) <(sort test2)
www.xyz.com/abc-1
www.xyz.com/abc-6

我尝试的另一个解决方案是:
fgrep -vf test1 test2

结果一无所获。

最佳答案

带锥子:

% awk 'NR == FNR{ a[$0] = 1;next } !a[$0]' test2 test1
www.xyz.com/abc-1

故障:
NR == FNR { # Run for test2 only
  a[$0] = 1 # Store whole line as key in associative array
  next      # Skip next block
}
!a[$0]      # Print line from test1 that are not in a

09-11 04:34
查看更多