合并不同文件行的最快命令行方式是什么?例如,我有两个文件:
.txt:
foo
bar
foobar
Run Code Online (Sandbox Code Playgroud)
b.txt
foo
foobar
line
by
bar
Run Code Online (Sandbox Code Playgroud)
我想得到以下输出:
foo
bar
foobar
line
by
Run Code Online (Sandbox Code Playgroud)
有没有什么快速的方法可以像上面的例子那样合并文件?(行的顺序并不重要)
Kus*_*nda 10
$ sort -u a.txt b.txt
bar
by
foo
foobar
line
Run Code Online (Sandbox Code Playgroud)
这将对两个文件的(组合)内容进行排序,删除重复的行。不利的一面是,如果在其中一个文件中复制了一行,这也将被删除。
要将结果写入c.txt,请使用
sort -u -o c.txt a.txt b.txt
Run Code Online (Sandbox Code Playgroud)
或标准重定向
sort -u a.txt b.txt >c.txt
Run Code Online (Sandbox Code Playgroud)
awk seen如果您不想对文件进行排序,请使用:
$ awk '!seen[$0]++' a.txt b.txt
foo
bar
foobar
line
by
Run Code Online (Sandbox Code Playgroud)
根据您所需的输出,我假设您只希望将两个文件与唯一的字符串合并。
在这种情况下,cat,sort并uniq能为你做到这一点:
cat a.txt b.txt | sort | uniq > c.txt
Run Code Online (Sandbox Code Playgroud)
cat 打开两个文件的内容
sort 按字母顺序对输出进行排序
uniq 只列出唯一的字符串
> c.txt 将所有输出放在一个新文件中 c.txt