Unix 文本处理

Unix 文本处理

2 个文本文件。我必须从两个文本文件中找到 uniq 值,并在第三个文件中获取输出以及文件名和 uniq 值。例如a.txt

1
4
3

b.txt

2
1
7

输出

File.out
b.txt 2
a.txt 3
a.txt 4
b.txt 7

我尝试了下面的命令

cat a.txt b.txt | sort | uniq -u >>file.out

但它只打印值,而不获取文件名

答案1

您可以使用 Awk 在文件名前面添加,然后对第二个字段进行 sort + uniq:

$ awk '{print FILENAME,$0}' a.txt b.txt | sort -k2 | uniq -uf1
b.txt 2
a.txt 3
a.txt 4
b.txt 7

相关内容