ターミナルで.confファイル内の一意でないキーのキー値をどのように変更しますか?

ターミナルで.confファイル内の一意でないキーのキー値をどのように変更しますか?

キー/値の形式の.confファイルがあります。ただし、一意でないキーがある可能性があります。これらの違いは次のとおりです。

###
### [meta]
###
### Controls the parameters for the Raft consensus group that stores metadata
### about the InfluxDB cluster.
###

[meta]
  # Where the metadata/raft database is stored
  dir = "/var/lib/influxdb/meta"

 # Automatically create a default retention policy when creating a 
database.
  # retention-autocreate = true

  # If log messages are printed for the meta service
  # logging-enabled = true

###
### [data]
###
### Controls where the actual shard data for InfluxDB lives and how it is
### flushed from the WAL. "dir" may need to be changed to a suitable         place
### for your system, but the WAL settings are an advanced configuration. The
### defaults should work for most systems.
###

[data]
  # The directory where the TSM storage engine stores TSM files.
  dir = "/var/lib/influxdb/data"

  # The directory where the TSM storage engine stores WAL files.
  wal-dir = "/var/lib/influxdb/wal"

dir私が達成したいのは、Fedoraでブロックの下のキー値を変更するスクリプトを書くことですdata。ここで同様の一意のキースクリプトを見ました(https://stackoverflow.com/questions/2464760/modify-config-file-using-bash-script)。しかし残念ながら、これは私には効果がありません。どうすればいいですか?

ベストアンサー1

ファイル名がfoo.confでdir値を "/dev/sdh"に変更すると、次のコードはデータ部分のdirキーワードのみを置き換えます。

sed -re '/^\[data\]$/,/^\[/ s/^(\s+)*(dir = .*)$/\1dir = "\/dev\/sdh"/' foo.conf
/^\[data\]$/,/^\[/

この部分は、sedが「データ」部分でのみ機能するようにします。 「data」を任意のキーワードに置き換えて、すべてのセクションに適用できます。

おすすめ記事