sed를 사용하여 구성 파일의 정보 찾기 및 변경

sed를 사용하여 구성 파일의 정보 찾기 및 변경

파트너라는 파일이 있습니다. 예를 들면 다음과 같습니다.

abc
def
ghi

다음과 같은 또 다른 conf 파일이 있습니다.

part=abc
var=x
var=y
id=123

part=def
var=z
id=345

등...

저는 while 루프를 사용하여 "파트너"의 행을 읽은 다음 sed를 사용하여 해당 파트너의 이름이 포함된 블록에 대한 conf 파일을 검색하는 쉘스크립트를 만들고 있습니다. 그런 다음 마지막으로 sed를 사용하여 id 값을 바꾸고(예: 123에서 123_1로) 새 블록을 다른 파일에 저장합니다.

while read -r var || [[ -n "$var" ]]
do sed -n '/part=$var/,/^$/p' conf.cfg | xargs sed 's/id=123/id=123_1/g' >> new.txt
done

내가 뭘 잘못했나요? 출력으로 빈 텍스트 줄만 제공하기 때문입니다.

답변1

명령 인수에 변수를 사용할 때는 간단한 따옴표로 묶을 수 없습니다.

셸 스크립트 문제를 해결하려면 명령을 하나씩 실행해 보세요. 이렇게 하면 문제의 범위를 좁히는 데 도움이 됩니다.

sed -n "/part=$var/,/^$/p" conf.cfg

관련 정보