月面三点倒立

後方2回宙返り1回ひねり三点倒立

最近なんとなくスクリプト言語に夢中な感じ。

きっかけはawkで、これがなかなかの使い勝手で「何で今まで使わなかったんだろぅ」とか当時プチ後悔したりしました。
で、awkの他にもいくつか言語をストックしておこうかなーってことでperlsedを考え中。
perlは思ったより面倒そうな雰囲気で導入部分でのんびりしてるんだけど、sedは一応一通り目は通したつもりでこれから本格的にいぢり倒したいなぁ、なんて思ってます。


そんな中早速ハマりましたヨ…。
適当なcsvのサンプルを拾ってきてその中から「異常」と書かれた行だけ取り出そうとか思ってスクリプトを書いてみたんだけど何か上手くいかない。
試しに書いてみたスクリプト(sample.sed)はこんな感じ。

                                                  • -

#!/usr/bin/sed
/異常/p
d

                                                  • -

で、動かすと
$ sed -f sample.sed sample.csv
sample.sed line 2: unterminated address regex
とか言われてボツ。なんか正規表現とこが変らしい。英文字だとちゃんと動く。
迷走しつつ環境変数がアレなのかなぁ、とか色々見てもよく分からず。


結局お手上げじゃん、ってことでワンライナーにしたら動いたというオチ。
$ sed -e '/異常/p;d' sample.csv


(′・ω・)えぇぇぇ〜
そりゃぁ、スクリプト書く規模じゃないからワンライナー書けばいーじゃん、ってのは分かるんだけど釈然としないなぁ。複雑なのを書くときもアドレスに日本語含む正規表現使ったらアウトなんだろなぁ。