macのsedでenvなどの=の後を置換する方法


はじめに

macで.envファイルやconfig系のファイルなどで、「=」の後を置換するコマンドのメモです。

環境

macOS High Sierra 10.13.6

コマンド

今回はlaradockのenv-exampleに記載されているPHP_VERSION=7.3をPHP_VERSION=7.4にしたかったのでその例です。

sed -i '' 's/PHP_VERSION=.*/PHP_VERSION=7.4/g' ./laradock/env-example

説明

-i ''
sedを実行してもinvalid command code .とエラーになり、こちらの記事を参考に-i ''を追記して動くようになりました。

.*
例ではPHP_VERSION=の後にどんな文字列が入ってもその行をPHP_VERSION=7.4置換するようにしました。

注意点

「=」の後を置換というより行全体の置換になってしまいました。ちょっと記述間違えると悲惨な事になりそうなので-i 'hoge'など、バックアップファイルを残す方が安全だなぁと。

最後に

もっとスマートなやり方をご存知の方はご教示くださいm(__)m
最近、開発はLinuxもありかなぁと思い初めております。