以下の内容はhttps://takuya-1st.hatenablog.jp/entry/2020/02/06/010852より取得しました。


sed で出現文字をすべて置換する /g オプション

sedで1行の中に複数回出てくる文字を全部置換

sed で置換していると、普段は気にならないけど、複数回登場する場合に置換漏れが出てくる。

グローバルのマッチング・オプション /g がある。

s/cat/dog/g

時々忘れそうになる

設定ファイルを触っているときには、気にならないことが多いので忘れそうになる。

global マッチオプションの例

ファイルを作ります。

takuya@:~$ echo cat cat cat > sample
takuya@:~$ echo cat cat cat >> sample
takuya@:~$ echo cat cat cat >> sample
takuya@:~$ echo cat cat cat >> sample
takuya@:~$ echo cat cat cat >> sample

ファイルの中身を確認

takuya@:~$ cat sample
cat cat cat
cat cat cat
cat cat cat
cat cat cat
cat cat cat

グローバルオプションなしで置換します。

takuya@:~$ cat sample | sed 's/cat/lion/'
lion cat cat
lion cat cat
lion cat cat
lion cat cat
lion cat cat

グローバルのオプションを有効にしたら

takuya@:~$ cat sample | sed 's/cat/lion/g'
lion lion lion
lion lion lion
lion lion lion
lion lion lion
lion lion lion

置換漏れに注意

dockerfile などを書いている場合は sed をグローバルなしで使ってても本当に気にならない。1行に同じ文字が出てくることはあまりない。

ところがデータファイルを扱うととたんに顕著にミスとして顕れてくる。本当に怖い。

参考

man sed




以上の内容はhttps://takuya-1st.hatenablog.jp/entry/2020/02/06/010852より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14