構成ファイルのエントリの変更

構成ファイルのエントリの変更

次の設定ファイルがあります

more /tmp/file

delete.topic.enable=true
broker.id=-1
advertised.listeners=null
.
.
.

上記のすべての構文を次のように変換する必要があります。

  1. "="区切り文字の前の文字を大文字に変更します。
  2. KAFKA_各行の先頭に追加
  3. 「=」区切り文字が表示されるまで、次の行の各点「.」を「_」に置き換えます。

予想結果の例

KAFKA_DELETE_TOPIC_ENABLE=true
KAFKA_BROKER_ID=-1
KAFKA_ADVERTISED_LISTENERS=null
.
.
.

これを変更するための提案はありますか?

これを試してみましょう。

KAFKA_ただし、これは「=」区切り文字の後にあるテナントを変換し(そうではない)、最初に追加する方法もわかりません。

sed 's/[a-z]/\U&/g'  /tmp/file | sed s'/\./_/g'

DELETE_TOPIC_ENABLE=TRUE
BROKER_ID=-1
ADVERTISED_LISTENERS=NULL
.
.

ベストアンサー1

match()の3番目の引数を一致させるには、GNU awkを使用します。

$ awk 'match($0,/([^=]+)(.*)/,a){ gsub(/\./,"_",a[1]); print "KAFKA_" toupper(a[1]) a[2]}' file
KAFKA_DELETE_TOPIC_ENABLE=true
KAFKA_BROKER_ID=-1
KAFKA_ADVERTISED_LISTENERS=null

いくつかの奇妙な場合:

$ awk 'match($0,/[^=]+/){ tag=substr($0,1,RLENGTH); gsub(/\./,"_",tag); print "KAFKA_" toupper(tag) substr($0,1+RLENGTH)}' file
KAFKA_DELETE_TOPIC_ENABLE=true
KAFKA_BROKER_ID=-1
KAFKA_ADVERTISED_LISTENERS=null

おすすめ記事