sedコマンド
置換とかができる
gnu-sedを使う
標準入力を受け取って、標準出力する
$ sed -e s/aaa/bbb/ input.txt > output.txt
良い感じにリダイレクトするなりなんなりすればいい
ファイルを指定した場合は、1行1行に対して<command>が適用される
docs
manと大体同じ
sedのパターンスペース
sedのホールドスペース
仕様的なものも興味あるが、まとめかたとしてはsed 慣用表現まとめみたいなのがあったほうが引きやすい気がしてきたmrsekut.icon*2
(無限にありすぎて)まとめるのダルいので、実際に使ったら随時↑に追記みたいなのでもいいかもしれない
-e <command>
<command>操作を適用する
commandには以下の3種類ある
Sed Address
Sed Regular Expressions
Sed Functions
殆どの場合これを使う
ここで指定する正規表現はBRE
<command>が1つしかない場合は、-eは省略可
e.g. $ sed "s/aaa/bbb/"
単純な正規表現の場合はquotationなくても動くが、orとか使うようになると動かなくなるので、quotationつける癖を付けたほうが良いかもしれないmrsekut.icon
複数指定できる
code:ex.shell
$ echo XXaaaX | sed -e "s/aaa//" -e s/X/B/g
BBB
regexp/afterは変数を使ってもいい
code: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とすればいい
sedのsコマンド
置換など
sedのdコマンド
行削除など
-E
正規表現にEREを使える
例えばorを書く時に|のescpaseが不要
code: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
sedのsコマンドのflugのpflugと組み合わせて使うことが多い
code:ex.shell
$ sed -n -e "s/aaa/bbb/p" input.txt
sedのsコマンドに依る置換を行って、置換が行われた行のみを出力する
https://qiita.com/hirohiro77/items/7fe2f68781c41777e507
https://qiita.com/takech9203/items/b96eff5773ce9d9cc9b3
https://orebibou.com/ja/home/201507/20150731_001/
ちゃんと読んでないけどまとまってそう
sed & awkプログラミング 改訂版というオライリーの本がある
https://www.oreilly.co.jp/books/4900900583/
man見たら本が出るのも理解できるわ〜、という具合の沼だった
/miyamonz-projects/sed & awk ハンズオン
https://sed.open-code.club/
https://hydrocul.github.io/wiki/commands/sed.html