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
マージは、ファイルがソートされていると仮定します。 「ソートされたファイルをマージしてソートしない」ので、ファイルをアルファベット順にマージしようとします。これは単なる接続ではありません。したがって、あなたの例では次のようになります。
- 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 の残りの部分が印刷されます。