![sed가 인용된 문자열로 인해 예상대로 작동하지 않습니다.](https://linux55.com/image/201728/sed%EA%B0%80%20%EC%9D%B8%EC%9A%A9%EB%90%9C%20%EB%AC%B8%EC%9E%90%EC%97%B4%EB%A1%9C%20%EC%9D%B8%ED%95%B4%20%EC%98%88%EC%83%81%EB%8C%80%EB%A1%9C%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
's3_bucket': 'pass'를 hello로 변경해야 하는데 작동하지 않습니다.
예:
echo "'s3_bucket': 'pass'" | sed 's/'s3_bucket':/hello/'
출력:
's3_bucket': 'pass'
내가 뭘 잘못하고 있는지 이해하도록 도와주세요.
답변1
인용문이 잘못되었습니다. 이 부분은 's/'s3_bucket':/hello/'
쉘에 의해 합계 's/'
와 결과가 인수로 해석됩니다 .s3_bucket
':/hello/'
s/s3_bucket:/hello/
sed
노력하다
echo "'s3_bucket': 'pass'" | sed "s/'s3_bucket':/hello/"
또는
echo "'s3_bucket': 'pass'" | sed 's/'\''s3_bucket'\'':/hello/'
두 번째 버전에는 '\''
큰따옴표 대신 두 개의 인접한 작은따옴표가 있습니다.
참조할 수 있는 더 많은 방법이 있습니다.이 비슷한 질문에 대한 대답.