sortコマンドの-mオプションはどのように機能しますか?

sortコマンドの-mオプションはどのように機能しますか?

sortマニュアルページによると、次のようになります。

-m, --merge
    merge already sorted files; do not sort

sort以下は、2つの単純なテキストファイルとオプションを含むコマンドの結果です-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 の残りの部分が印刷されます。

関連情報