generated at
sedのsコマンド
substitute

flugを指定できる
s/regexp/after/<ここ> <ここ> の部分

sコマンドというかs関数じゃないの #??
「sコマンド」でググると引っかかるが、man的には「s function」ではとか思った
でも -e <command> とも書いているし、コマンドなのかな、知らん


正規表現部分のデリミタは任意
$ sed -e 's|aaa|bbb|' みたいにパイプで区切ってもいい
$ sed -e sXaaaXbbbX とかでもいい
s の次の文字がデリミタとして認識される
慣習的には「\」「@」「%」が使われることが多い
regexpとafterに出現しない文字で区切ればescapeの手間を省ける
pathを置換したいときは / で区切ってるとespace多発するのでめんどい









s/^/bbb/
行頭に bbb を追加
s/$/bbb/
行末に bbb を追加
この $ はescaseさせたほうがいいらしいmrsekut
\$
s/aaa//
文字列 aaa を削除
例.shell
$ echo XXaaaX | sed -e s/aaa// XXX

s/^...//
行頭の3文字削除
. は「任意の1文字」を表すので。
s/.*/bbb/
行を bbb に置き換える
ex.shell
$ echo aaaXXXbbb | sed -e 's/.*/YYY/' YYY
s/(.*)/()/
括弧の中の文字列を削除
ex.shell
$ echo '(aaa)XXX' | sed -e 's/(.*)/()/' ()XXX
なんでこうなる?
ex.shell
$ echo '(aaa)XXX(bbb)' | sed -e 's/(.*)/()/g' ()
()XXX() を期待していたんだけどmrsekut
先頭の ( と、行末の ) で大きい括弧だと解釈されるのか

\1 \U などのコマンド
\1 \2 などで \(\) でくくったものを取り出せる
普通に () と書くと正規表現のマッチすべき丸括弧だと認識されるので、escapseする必要がある
\U はUppser caseにする
ex.shell
$ echo "abcDEF" | sed -e 's/\(...\)\(.*\)/\U\1\L\2/' ABCdef