HOME / コンピュータTips / スクリプト / 行の置き換えをawkで行う

Date: 2013/07/21 |  このエントリーをはてなブックマークに追加  |  Tags: awk, 行の置き換え

行の置き換えを、awkで行う

シェルスクリプト中で設定ファイルを自動的に書き換えたいときに使うawkスクリプトサンプル。面倒なので同時性の問題は加味しない。

  • Perlに依存したくないシェルスクリプト
  • ファイル中に
    • 正規表現でマッチした行があれば、リプレース
    • なければ、最後に追加する。
ALIAS=/etc/mail/aliases
cat ${ALIAS} |\
    awk '
{
    if( $0 ~ /^root:/){
        print "root: xxxx[-at-]example.com";
        rp=1;
    } else {
        print;
    }
}
END{
    if(rp != 1)
        print "root: xxxx[-at-]example.com"
}
'>> ${ALIAS}.new && mv ${ALIAS} ${ALIAS}.bak && mv ${ALIAS}.new ${ALIAS}

追記

これを、備忘録いりしたのにはワケがあります。

理由は、結局、思ったよりも長くなってしまったり、同じ文字が何回も出てくるので使いづらかったからです。

Perlではもう少し抽象化したものを前に作ってあって、結局、これを作った上で、今回もそのPerlプログラムを使うに至りました。

とはいえ。

どうしてもPerlが使えないときがたまにあるような気がするので、後で参考にするために備忘録入り・・・。