53歳限界プログラマの憂鬱

SU/CAR-ST-APplication-cellsから派生したプログラマのブログ

本家はこちら↓
f:id:sucar:20151115183011p:plain

SU/CAR-ST-APplication-cellsのmix of AB(安倍野ミックス)と申します
来訪ありがとうございます
シストレツールを自作してます
自分用の記事が多いのであまり役には立たないブログでしたが
2018/10月以降、多少は役立つブログになるかもしれません
と思いましたが、しばらくは自分用記事が多いかも・・・

f:id:sucar:20150414193802p:plain

自作システム詳細目次

sed でセミコロンあるいは波括弧{}がおかしい(w コマンド たぶんrコマンドも)

バグなのか? 仕様なのか?

{}で複数のコマンドを纏めたら変なエラーが出て・・・

 sed '/_start_/,/_end_/ {w testest.txt;d}

これを実行すると

sed: -e expression #1, char 0: `{' が不一致です

と}を認識してくれない???

 sed -e '/_start_/,/_end_/ w testest.txt' -e '/_start_/,/_end_/d'

コマンドを分けて書けば問題ない

しかし同じアドレスを2回も書くのは不満だ

何のための波括弧{}と;セミコロンなのか???

さっぱりわからずorz

試しに

 sed '/_start_/,/_end_/ {w testest.txt}

これを実行するとなぜかやはり

sed: -e expression #1, char 0: `{' が不一致です

と}を認識してくれない???

 勿論コマンド一つなので{}は不要で{}を消せばエラーは出ない

さらに試しに

 sed '/_start_/,/_end_/ {d}

これを実行するとなぜかエラーは出ない

まったく???なんだけども 結局のところ・・・

ja.stackoverflow.com

これ見て納得

rコマンドでそうならWコマンドでそうなるんだろう

しかしバグなのか? 仕様なのか?

なので

 sed '/_start_/,/_end_/ {w testest.txt
    d}'

と2行に分けて(セミコロンは不要)書くことで解決

まあ普通ソース読まないですorz