考虑情景 -
文件1:
mike;john;552
mike;mike;555
john;mike;121
file2的:
aks;raj;425
man;joe;895
mike;john;552
假设file1和file2包含上述两组数据。我想把这两个文件中的数据放到另一个文件中,其中数据是uniq(意思是:file1和file2包含公共数据mike;john;552
,但是当合并文件时我不想有重复文件。
我使用了命令:
cat file1 file2 | sort -u > file3
但是这只给了我共同的一行,即复制到文件3中。
也试过
cat file1 file2 | uniq > file3
不产生所需的结果。
预期产量: file3的:
mike;john;552
mike;mike;555
john;mike;121
aks;raj;425
man;joe;895
注意:file3中的数据可以是任何顺序。
请帮忙。
答案 0 :(得分:0)
你的第一个命令对我有用并给出了预期的输出:
$ cat -v file1
mike;john;552
mike;mike;555
john;mike;121
$ cat -v file2
aks;raj;425
man;joe;895
mike;john;552
$ cat file1 file2 | sort -u > file3
$ cat file3
aks;raj;425
john;mike;121
man;joe;895
mike;john;552
mike;mike;555
如果您没有这样做,请使用cat -vE
找出原因。以下是两个例子:
$ cat file1 file2 | sort -u
foo
foo
$ cat file1 file2 | sort -u | cat -vE
foo$
foo $
在这种情况下,它看起来像是重复,但由于尾随空格,这些行实际上是不同的。
$ cat file1 file2 | sort -u
foo
foo
$ cat file1 file2 | sort -u | cat -vE
foo$
foo^M$
在这种情况下,它看起来像是重复,但是一个文件有回车,因为它是以DOS / Windows模式而不是Unix模式保存的。