一方ロシアは(SED編)

最近仕事で(勿論非IT系)異種ファイル間の整形作業が多いです。例えばWordに「タイトル日付本文」みたいなチャンク(専門用語でなんていうかは知らん)があってそれをExcelに落とすとか。
そんなわけで寝ながらコピペの鬼になるのも俺若いみそらでなにやってるんだろう的な気分になってきてしまうしせっかくPerlのお勉強で文字列置換のやり方や正規表現を学んだんだから生かせないか、ということでやってみました。


普通は愛用のemEditorにコピペしていらん情報そぎおとして適当な正規表現で置換ちょろちょろでどうにかなるんですが、今回のお題は「特定部分だけ残して他を全部消したい」。もう少し具体的にするならば「タイトル日付本文」の内本文はいらん、という。タイトル日付その他の部分は表を使っているのでいいんですが、厄介なのは本文はいろんなところから借りてきているから一定の文法に則っていない事。だから本文部分を直接指定する事は難しくって・・・。


で、うちの開発に薦められたのがSED。というか勝手に入れられて作業されてた。

UNIXとか全然わからないんですが、UNIXに標準でついてるアプリをWinに移植したってこと…なのかな???まぁ文字列扱うには便利だよと。perlなんか使ってるんじゃねえと(言ってない。


SEDで新しいと思ったのは行単位で扱える、ということ。「〜で始まる行を削除」とかってことが出来る。
なので、今回の場合だと

sed '/^Date:/,/^Title:/!d' huga.txt > huga2.txt

という感じ。「Date:から始まる行」から「Title:から始まる行」まで以外を消去、という雰囲気です。"!"をつけると「以外」になります。


というわけで参考URLたち。
sed - ストリーミングエディタ
sed に関するメモ


・・・普通にコピペした方が早かったんじゃね?という話でした。
ま、「苦労を避けるためならどんな苦労でもする」ですよねぇ?