sed +パラメーターのコメントを外し、ファイルの値を変更します。

sed +パラメーターのコメントを外し、ファイルの値を変更します。

wal_levelパラメーターのコメントを外して、値を最小からアーカイブに変更したいと思います。

sed / perl one-linerを使用してどうすればこれを行うことができますか?

$ grep wal_level  /var/lib/pgsql/data/postgresql.conf
#wal_level = minimal                    # minimal, archive, or hot_standby

予想される結果:

  wal_level = archive                    # minimal, archive, or hot_standby

「#」にはwal_level複数のスペースを含めることができます。

たとえば、

#     wal_level = minimal   

または

#       wal_level = minimal   

など。

ベストアンサー1

これは働きます:

sed 's/^ *# *wal_level *= *[^ ]*/wal_level = archive/'

また、コメントの前には空白を 1 つ許可し(万が一の場合に備えて)、他の場所では空白を 0 個以上許可します。またはPerlでは:

perl -pe 's/^\s*#\s*wal_level\s*=\s*\S+/wal_level = archive/' file

おすすめ記事