sedコマンド
置換とかができる
標準入力を受け取って、標準出力する
$ sed -e s/aaa/bbb/ input.txt > output.txt
良い感じにリダイレクトするなりなんなりすればいい
ファイルを指定した場合は、1行1行に対して <command>
が適用される
manと大体同じ
仕様的なものも興味あるが、まとめかたとしては
sed 慣用表現まとめみたいなのがあったほうが引きやすい気がしてきた


(無限にありすぎて)まとめるのダルいので、実際に使ったら随時↑に追記みたいなのでもいいかもしれない
-e <command>
<command>
操作を適用する
commandには以下の3種類ある
殆どの場合これを使う
<command>
が1つしかない場合は、 -e
は省略可
e.g. $ sed "s/aaa/bbb/"
単純な正規表現の場合はquotationなくても動くが、orとか使うようになると動かなくなるので、quotationつける癖を付けたほうが良いかもしれない

複数指定できる
ex.shell$ echo XXaaaX | sed -e "s/aaa//" -e s/X/B/g
BBB
regexp/afterは変数を使ってもいい
ex.shell$ REGEXP=aaa
$ AFTER=bbb
$ echo aaa | sed -e "s/$REGEXP/$AFTER/"
bbb
-e
の直後はcommandなので、
$ sed -e -n <command>
みたいな書き方はしてはいけない
$ sed -n -e <command>
か $ sed -e <command> -n
とすればいい
置換など
行削除など
-E
例えばorを書く時に |
のescpaseが不要
ex.shell$ echo aaa | sed -e "s/a\|b/O/g" # BRE `\|`と書かないといけない
OOO
$ echo aaa | sed -E "s/a|b/O/g" # ERE
OOO
-a
-f
-i
-l
-n
ex.shell$ sed -n -e "s/aaa/bbb/p" input.txt
ちゃんと読んでないけどまとまってそう
man見たら本が出るのも理解できるわ〜、という具合の沼だった