先日の ed コマンドのエントリー
に対して、はてなブックマークでこんなコメントが入った。
edコマンド次第で「ファイルの先頭から文字列検索して3件目に見つかった行の1行下を置換」とかもできるしね。
ed スクリプターの Hack 魂をくすぐる、いい練習問題に見える。ed スクリプトを書いてみやう。
「foo」という文字列を検索して「hoge」を「fuga」に置換するとして、以下のファイルを foo.ed というファイル名で保存。
/foo/ // // + s/hoge/fuga/g w
実行は以下の通り。
$ ed - foo.txt < foo.ed
ed スクリプトの解説
foo.ed の解説を簡単に。
/foo/
は文字列 foo の検索。スラッシュの間に検索文字列 (正しくは正規表現) を記述する。続く //
は、直前の検索を繰り返す。つまり、最初の三行で「文字列検索を 3 回実行」したことになる。
続く +
(プラス記号) は、次行にポイントを移動させる命令。
次行にポイントを移したら、その行に対して s/hoge/fuga/g
で置換。そして w
で保存。
ed には、if 文やループ構文がないので、複雑なスクリプトは書けない。でも、ちょっとしたファイル編集を書くのは楽しい。
No comments:
Post a Comment