sort 命令中 -m 选项如何工作?

sort 命令中 -m 选项如何工作?

正如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

合并假设文件已排序:“合并已排序的文件;不排序”,因此将尝试将它们合并为字母顺序。这不是一个简单的串联。所以在你的例子中:

  1. aa < gg :打印 aa,移动到 a_file 中的下一行
  2. ff < gg :打印 ff,移至 a_file 中的下一行
  3. hh > gg : 打印 gg,移至 b_file 中的下一行
  4. hh < tt :打印 hh,移至 a_file 中的下一行
  5. bb < tt :打印 bb,移至 a_file 中的下一行
  6. 没有剩下 a_file,因此打印 b_file 的其余部分。

相关内容