tcsh……

SED Lecture を読んで、sedgrep の代わりになるのか、と思いつつ tcsh 上で試してみたんだけど

sed '/hoge/!d' file

と打ったら、

d: イベントが見つかりません

とか、

sed: -e 表現 #1, 文字数 10: extra characters after command

といったエラーがでる。これはどうもシングルクオートで囲っているにも関わらず、tcsh が !d を最近打った d から始まるコマンドに置き換えようとするためのようだ。最近 d で始まるコマンドを打っていないと「イベントが見つかりません」と tcsh がエラーを出す。d で始まるコマンド、例えば date とかを打っていると tcsh が '/hoge/date' などというコマンドを sed に渡してしまうため、 sed が「extra characters after command」とエラーを出す。ということらしいので、まともに動かすには、エスケープする必要がある。

sed '/hoge/\!d' file

なんていうお茶目なところのある tcshanarchy golf に推薦してみたいと思います。関数が作れないところもちょいマゾでいいかも。