タグ付きデータのファイルがあって、これをソートしたいとする。固定フィールド長を持たない自由形式ファイルをGNU sortで扱うことは簡単ではない。だが、次のmsort呼び出しなら、ラストネームでデータをソートできる。最初の呼び出しでは長い引数名を使用しているが、これは例をできるだけ読みやすくするためで、最後のコマンドでやっているように短い引数オプションを使っても同じソートができる。-l/--lineオプションは、各行を1つのレコードとして扱うようmsortに指示している。-t/--tagオプションは、ソートキーを探すときに正規表現を使えという指示である。
$ cat tagged-data.txt first:Frodo last:Baggins first:Samwise last:Gamgee first:Meriadoc last:Brandybuck first:Peregrin last:Took $ msort.utf8proc --quiet --line --tag last: tagged-data.txt first:Frodo last:Baggins first:Meriadoc last:Brandybuck first:Samwise last:Gamgee first:Peregrin last:Took $ msort.utf8proc -qlt last: tagged-data.txt
msortは、複数行にまたがるレコードも扱える。レコードどうしの分離に特殊文字が使われているときは、--record-separatorコマンドラインオプションを指定し、msortにその文字を使わせることができる。この指定がない場合、msortは2個以上の改行文字の連続をレコード分離記号とみなす。
以下に示すのは上と同じデータだが、レコードが複数の行にまたがっている。ここでは、--blockオプションでレコードが複数行形式になっていることをmsortに伝えたうえで、ラストネームによらず、ファーストネームでソートを実行してみよう。レコードごとにfirstタグとlastタグの順序がまちまちであることに注意してほしい。さらに、Peregrinには新しい値を追加してあるが、これは結果の並び順にまったく影響していない。
$ cat multiline-data.txt first:Frodo last:Baggins last:Gamgee first:Samwise first:Meriadoc last:Brandybuck something else first:Peregrin last:Took $ msort.utf8proc --quiet --block --tag first: multiline-data.txt first:Frodo last:Baggins first:Meriadoc last:Brandybuck something else first:Peregrin last:Took last:Gamgee first:Samwise
