如何合并不同行的文件?

如何合并不同行的文件?

合并不同行文件的最快命令行方式是什么?例如,我有两个文件:

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,sortuniq可以为您执行此操作:

cat a.txt b.txt | sort | uniq > c.txt

cat打开两个文件的内容

sort按字母顺序对输出进行排序

uniq仅列出唯一的字符串

> c.txt将所有输出放入一个新文件中c.txt

相关内容