こんにちは、「コマンドラインは友達」のwakです。Windows 10になっても未だにちょっとした強化が行われたコマンドプロンプトですが、こちらを使ったちょっとした小ネタを書きます。
問題
メモ帳に次のような文字が並んでいます。これをアルファベット順に並べ替えたいのですが、なるべく手軽で速い方法は何でしょうか?
解答
- 並べ替える内容をクリップボードにコピーします。
- コマンドプロンプトを開きます。Windowsキー→「cmd」→エンターキー、またはWindowsキー+[R]→「cmd」→エンターキーで起動するはずです。
sort | clip
と入力してエンターキーを押します。- 入力待ちになるので、右クリック→貼り付け(P)ででクリップボードの内容をペーストします。Windows 10ならCTRL+Vでできるようになりました(事前設定が必要ですが)。
- [CTRL]+[Z]を押し、エンターキーを押します。
- 終わり! 結果がクリップボードに上書きされています。
解説
sort
コマンドは標準入力*1から渡された複数の文字列(改行区切り)をソートして標準出力*2に吐き出すコマンドです。ですから普通に起動すると、
このように入力待ちになります。ここにソートする対象の文字列をキーボードから入力していけばいいのですが、今はそのかわりにクリップボードからの貼り付けを行いました。
入力する内容は改行(エンターキー)でいくらでも入力していくことができます。では入力を終えるためにはどうしたら良いかというと、ここは古の昔からEOF (End Of File)というものを使うと決まっています。これはキーボードから直接入力することができ、そのキーシーケンスが[CTRL]+[Z]です。
EOFを検知するとsort
コマンドはそこで入力受付を終了し、与えられた文字列のソート処理を行います。その結果は標準出力に出力されますので普通に表示されます。
この結果を標準出力へ出力する(つまりモニターに表示する)のではなく、クリップボードに出力するための切り替えが | clip
です。同じような話を以前書きました。
ソート順をひっくり返して降順に並べ替えたいときはsort /R | clip
のように/R
オプションを付けましょう。
以上です。もちろんExcelに貼り付けてソートをしたって構いませんし、かかる時間もそう大きくは変わりませんが、キーボードとマウスの持ち替えのような思考を邪魔する作業はなるべく排除していきたいものですね。