구성 파일의 항목 수정

구성 파일의 항목 수정

다음 구성 파일이 있습니다

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
.
.
.

이 변경에 대한 sed 제안이 있습니까?

우리는 이것을 시도합니다.

KAFKA_그러나 이것은 또한 "=" 구분 기호 뒤에 용선자를 변환합니다(그래서는 안 됨). 또한 처음에 어떻게 추가할 수 있는지 잘 모르겠습니다.

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

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

답변1

match()에 대한 세 번째 인수에 대해 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의 경우 :

$ 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

답변2

awk -F "=" 'OFS="="{gsub(/\./,"_",$1);print "KAFKA_"toupper($1)"="$2}' FILE

산출

KAFKA_DELETE_TOPIC_ENABLE=true
KAFKA_BROKER_ID=-1
KAFKA_ADVERTISED_LISTENERS=nul1

파이썬

#!/usr/bin/python
import re
k=open('file1','r')
for i in k:
    y=i.split('=')
    z=y[0].upper().replace(".","_")+"="+y[1]
    print "KAFKA_{0}".format(z).strip()

산출

KAFKA_DELETE_TOPIC_ENABLE=true
KAFKA_BROKER_ID=-1
KAFKA_ADVERTISED_LISTENERS=null

답변3

perl짧막 한 농담:

perl -pe 's/^([^=]+)/KAFKA_\U$1/; s/\.(?=[^=]*=)/_/g' file

관련 정보