合并不同行文件的最快命令行方式是什么?例如,我有两个文件:
a.txt:
foo
bar
foobar
b.txt
foo
foobar
line
by
bar
我想得到以下输出:
foo
bar
foobar
line
by
有没有像上面的例子一样快速合并文件的方法? (行的顺序并不重要)
答案1
$ sort -u a.txt b.txt
bar
by
foo
foobar
line
这将对两个文件的(组合)内容进行排序,删除重复的行。缺点是,如果某个文件中的某一行重复,该行也会被删除。
要将结果写入c.txt
,请使用
sort -u -o c.txt a.txt b.txt
或标准重定向
sort -u a.txt b.txt >c.txt
答案2
awk seen
如果您不想对文件进行排序,请使用:
$ awk '!seen[$0]++' a.txt b.txt
foo
bar
foobar
line
by
答案3
根据您所需的输出,我认为您只想将两个文件与唯一的字符串合并。
在这种情况下,cat
,sort
和uniq
可以为您执行此操作:
cat a.txt b.txt | sort | uniq > c.txt
cat
打开两个文件的内容
sort
按字母顺序对输出进行排序
uniq
仅列出唯一的字符串
> c.txt
将所有输出放入一个新文件中c.txt