特定の文字列を含む行だけ、大文字を小文字にしたいとき、エディタで行うのは非効率です。
そんなとき、sed
が便利です。macの場合にはGNU版を入れてからgsedコマンドを呼び出します。
GNU版のsedをmacにインストール
$ brew install gnu-sed
上記の例は、このコマンドで書き換えた結果です。
-i
オプションの後ろに文字列を指定すれば、バックアップファイルが作れます。
$ gsed -i '/name:/ s/[A-Z]/\L&/g' models/metering/models.yml
特定の文字列より後ろだけ小文字にしたい時もあります。
gsed(GNU版のsed)で行の最後で宣言される"AS"の後ろだけを小文字に置換する例は次の通りです。
今回は、複数ファイルを対象に一括で置換しています。
# 対象のファイルを * 付きで指定しているので、複数ファイルを一括で置換できます
# -i オプションを足すとファイルを上書きできます
$ gsed -E 's/(.+)(AS )([^[:space:]]+)/\1\2\L\3/g' models/metering/*.sql
なかなか便利なコマンドだったと思います。置換の作業を効率化できましたね!