bash 쉘스크립트 문자열 바꾸기 질문

onetree의 이미지

쉘스크립트를 만지기 시작한지 얼마 안 되었습니다.
아래와 같은 작업을 하려고 하는데 잘 되지 않아서 질문 드립니다.

아래와 같은 파일에서 usa문단에 있는 name항목의 내용을, 변수로 입력받아서, 으로 바꾸려고 합니다.
조건은, name의 내용은 수시로 바꿀 일이 생깁니다. comment의 내용은 변경없이, name의 내용만 바꾸려고 합니다.
-------------------------------------------------
파일의 일부
-------------------------------------------------
[korea]
name=jong soo kim ' comment
add=daejeon ' comment

[usa]
name=tom jones ' comment
add=ohio ' comment
-------------------------------------------------

제가 아는 것이 sed 명령어라서 이것을 이용해서, 아래와 같이 라인 전체의 내용을 바꾸려고 해 보았는데 생각대로 안됩니다.
sed -i "/usa/,/name/tom/ c name=${변수} 'comment" file

name에 있는 내용(tom jones)만 ${변수}로 바꿀수 있으면 가장 좋겠지만,

안되면 그 라인 전체를 다시 바꾸는 방법도 괜찮습니다.

초보임을 감안하여 쉽게 설명해 주시면 더욱 감사하겠습니다.

p.s. 저의 설명이 부족하여 잘 이해가 안 되시는 것 같아, 다시 작성했습니다.

익명 사용자의 이미지

어떤 초기 상태에서 어떤 입력을 받아서 뭘 하고 싶은 것인지 구체적으로 예를 들어서 설명해보세요.

지금 설명은 무의미한 문자열과 메타 변수들이 뒤섞여서 뭘 하고 싶다는 건지 이해가 어렵습니다.

꼭 "aaaaaa bbbb ccccc ddddd 'comment 를 (원래있던거) (바뀐거) (더좋은거)로 바꿔주세요" 이런 느낌입니다.

황병희의 이미지

스샷 올립니다~

댓글 첨부 파일: 
첨부파일 크기
Image icon Screenshot from 2020-03-18 20-26-08.png349.49 KB

--
^고맙습니다 감사합니다_^))//

황병희의 이미지

(bionic)soyeomul@localhost:~/111$ ./11.py 봉테일
 
[usa]
name=봉테일 ' comment
add=ohio ' comment
 
(bionic)soyeomul@localhost:~/111$ ./11.py "마이클 잭슨"
 
[usa]
name=마이클 잭슨 ' comment
add=ohio ' comment
 
(bionic)soyeomul@localhost:~/111$ ./11.py "토발즈 행님과 리눅스 커널 기여자들^^^"
 
[usa]
name=토발즈 행님과 리눅스 커널 기여자들^^^ ' comment
add=ohio ' comment
 
(bionic)soyeomul@localhost:~/111$ 

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
 
import sys
 
변수 = sys.argv[1]
 
text = """
[usa]
name={0} ' comment
add=ohio ' comment
""".format(변수)
 
print(text)

[우분투 18.04 파여폭스 나비에서 작성했어요]

--
^고맙습니다 감사합니다_^))//

onetree의 이미지

새로운 과제를 주셔서 한번 살펴보도록 하겠습니다.

그런데, 이것을 쉘스크립트에서 가져다 사용할수도 있는지요?

파이썬3의 이미지

파이썬3 가 필요하구요 쉘에서 실행권한 주고 실행하심 됩니다.

[크롬북에서 적어요~]

onetree의 이미지

공부해 보겠습니다.