標準入力をASCII順にソートするコマンド

標準入力をASCII順にソートするコマンド

時々、GNU sort は期待通りに動作しないことがあります。次に例を示します。

> bind | sort

(これは fish を使用していることを前提としています。bash では、同等のものは ですbind -p。) 出力内のアルファベット以外の文字はすべてソート時に基本的に無視されるため、意図したとおりになりません。出力のサンプルを次に示します。

bind --preset \e\b backward-kill-word
bind --preset \eb backward-word
bind --preset \e\[B down-or-search
bind --preset \e\< beginning-of-buffer
bind --preset \e cancel
bind --preset \ec capitalize-word
bind --preset \e\[C forward-char
bind --preset \e\[D backward-char
bind --preset \ed kill-word

私が望んでいたのは、すべてのキーバインディングを隣り合わせに配置することでした\e[a-z]。すべての文字を文字として扱い、厳密に ASCII 順にソートするように sort の動作を変更するにはどうすればよいでしょうか? man ページを調べましたが、役に立つ情報は見つかりませんでした。

答え1

まったくのランダムな見知らぬ人、その通りです。sort のコマンドライン スイッチにはこのオプションはありません。ただし、sort をこのように動作させることは可能です。必要なのはロケールを変更することだけです。

> bind | LANG=C sort
...
bind --preset \e\x7f backward-kill-word
bind --preset \eb backward-word
bind --preset \ec capitalize-word
bind --preset \ed kill-word
bind --preset \ee edit_command_buffer
bind --preset \ef forward-word
bind --preset \eh __fish_man_page
bind --preset \el __fish_list_current_token
...

関連情報