正如sort
的手册页所说:
-m, --merge
merge already sorted files; do not sort
sort
这是我的两个简单的文本文件和带有选项的命令的结果-m
:
soroush@pop-os:~/Desktop$ cat a_file.txt
aa
ff
hh
bb
soroush@pop-os:~/Desktop$ cat b_file.txt
gg
tt
ss
ii
cc
soroush@pop-os:~/Desktop$ sort -m a_file.txt b_file.txt
aa
ff
gg
hh
bb
tt
ss
ii
cc
我期望看到这个输出:
aa
ff
hh
bb
gg
tt
ss
ii
cc
有人可以解释一下这种行为吗?
答案1
合并假设文件已排序:“合并已排序的文件;不排序”,因此将尝试将它们合并为字母顺序。这不是一个简单的串联。所以在你的例子中:
- aa < gg :打印 aa,移动到 a_file 中的下一行
- ff < gg :打印 ff,移至 a_file 中的下一行
- hh > gg : 打印 gg,移至 b_file 中的下一行
- hh < tt :打印 hh,移至 a_file 中的下一行
- bb < tt :打印 bb,移至 a_file 中的下一行
- 没有剩下 a_file,因此打印 b_file 的其余部分。