« 第10回 コマンド落穂拾い | メイン | 補遺その2・sed以外の検索・置換(楽ちん度優先) »

ごぶさたしておりました。sed拾遺物語こと補遺です。
補遺1:お取り置きしましょうか?~パターンスペースとホールドスペース

sedは行単位でコマンドを実行するものです。それはどおゆうことかといいますと。56億7千万行のテキストファイルがあったとしても。その全部をどか~んと一気に扱うわけではないということです。森の小人さんのように地道に1行1行、取り込んではコマンドを実行しているわけなんですね。その取り込み先こと、小人さんの作業場のことをパターンスペースといいます。パターンスペースはテンポラリバッファらしいですがアモールバッファ(c)平沢進とどう違うんでしょおか。うむむ。

冗談はさておき。sedのもうひとつのバッファにホールドスペースというものがあります。これは小人さんの倉庫です。パターンスペースとホールドスペース間でデータを移動できるのがsedの特徴なのでした。

つまり。先にパターンスペースで下味をつけておいた材料をホールドスペースにいったん保管しておいて。別の材料の準備がととのい次第、もう一度パターンスペースに戻して、別の材料とまぜまぜするなどということができるのですね。ホールドスペースは倉庫というより待避所といった方がいいかもしれない。

こおゆうホールドスペースに関係するコマンドには、以下のものがあります。


h , H
待避コマンド。パターンスペースの内容をホールドスペースにもっ てゆく。 hはそれまでのホールドスペースの内容に上書き、Hはその下に追加する 。
g , G
復帰コマンド。ホールドスペースの内容をパターンスペースに戻す 。gは上書き、Gは追加。
x
交換コマンド。パターンスペースとホールドスペースの中身をチェ ンジする。
ある条件をもつ行の順番を入れ替えたり、段落ごとに操作をしたりする場合に使えるコマンドであります。例ですか。はい。
あ。例の前に。複数のコマンドを使うときは、スクリプトファイルの中を


あどれす{
こまんどお
別のこまんどお
もういっちょこまんどお
}
という形にしますので念のため。

例文として。次の2行からなるファイルがあるとします。


いざスープの水面に帆を立てて
道のひびから花が咲く

この2行をひっくり返すスクリプトは。1行目をホールドスペースに待避して、2行目(=最終行)の後ろでパターンスペースに戻せという内容になります。

1{
h
d
}
${
G
}
という具合(注:$は正規表現ではなく、最終行を表す)。結果は。

道のひびから花が咲く
いざスープの水面に帆を立てて

注意しなくてはならないのはhとdコマンド。もしhでなくHにした場合、それまでのホールドスペースの下に追加されるので。ホールドスペースが空であったら、その空行の下に追加されてしまうのです。つまりよけいな空行が「いざ~」の上についちゃうわけ。

また、hでホールドスペースに1行目を待避しても、パターンスペースには残っているので (カットするのではなくコピーしているので) dコマンドでいったんパターンスペースから1行目を削除しています。


補遺2:祈るようにsedを探して駆けてたこと~参考文献

「sedは日暮れて」を書く上で参考にしたのは、

Dale Dougherty著、福崎俊博訳『sed & awk プログラミング』(アスキー出版局)
です。筆者の愛が伝わってくるよいご本であります(^0^)。その他にMS-DOSの古い256倍本も一部参考にしました。
インターネット上では、NiftyServe FMCN フォーラムで行われていたSED教室の内容がWebあるいはftpでgetできます。

SEDLEC Release 1.11←95年改訂の最新版(Web)
SEDLEC Release 1.00←92年のオリジナル版(ftp。docファイル)
「sedは日暮れて」はsコマンド中心の内容でしたが、こちらは別コマンドを含んだやや難しめの内容だと思います。
NIFTY Serveでは、他にFWORK(在宅ワークフォーラム)でも在宅翻訳がらみで、sedの参考文献の話が出ていたようです。

トラックバック

このエントリーのトラックバックURL:
http://www.chimimo.com/mt/mt-tb.cgi/12

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2006年08月07日 22:56に投稿されたエントリーのページです。

ひとつ前の投稿は「第10回 コマンド落穂拾い 」です。

次の投稿は「補遺その2・sed以外の検索・置換(楽ちん度優先)」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

www.flickr.com
chimimo's photos More of chimimo's photos
Powered by
Movable Type