!1行シェルスクリプトとEmacsで極力物事を済ます方針になって久しいのですが、コンテスト中は時間がないので多少のスクリプトを用意しています。先日コンテスト中にこんなスクリプトがあったらいいなあ、と考えついたので早速作成しました。Emacsでテキストを加工する。sample1.txt、answer1.txt、...と出力される例えば以下のようなファイルを用意します。48これにコマンドを適用すると、以下のようにファイルに格納されるようにしたいのです。4answer2.txt:8こういう処理はシェルスクリプトでさっさと書いてしまいましょう。fidone早速テストして...いい感じですね。sample2.txtさて、これを自分の環境にリリースしたのですが、どうも自分の操作と相性が合わないのです。diredから!でファイル操作ができないのが原因でした。diredから!とするにはシェルスクリプトがファイル名を引数として得て処理できなければなりません。これを解決するのは簡単で、以下の1行を代入するだけでした。:つまるところ、引数としてファイルが与えられていた場合、ファイルの内容を標準入力にリダイレクトしてしまえばよいのです。diredから快適にコマンドを使うことができるようになりました。今から使う機会が楽しみです。続きさて、このスクリプトであると空行が2つ以上続くとよくない結果となります。sample3.txt空白毎に出力するファイルを更新しているのが原因です。これを防ぐために、予めsedを適用して調整しています。:このsedスクリプトも面白いので興味があれば是非処理を追ってみてください。具体的には、「全て読み込んでから連続する改行を取り除く。各行が空白を含む空行であればこれも処理する」といったことをしています。最新のスクリプトはこのGistで管理しています。