Linux

-m 選項在排序命令中如何工作?

  • March 22, 2022

正如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 : 在 a_file 上列印 aa 移動
  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 的其餘部分。

引用自:https://unix.stackexchange.com/questions/696305