sed를 사용하여 파일의 복잡한 명령 대체

sed를 사용하여 파일의 복잡한 명령 대체

다음 문자열을 바꾸고 싶습니다

바꾸다:'상태 코드: {code}'.format(code=r.status_code) 인쇄

그리고:print('상태 코드: {code}'.format(code=r.status_code))

이것은 내가 실행하고 있는 명령인데 실패합니다.

find ./ -type f -exec  gsed 's/'print 'Status Code: {code}'.format(code=r.status_code)'/'print('Status Code: {code}'.format(code=r.status_code))'/g' {} \;

특수 문자 효과를 피하기 위해 \를 사용해 보았지만 여전히 실패하고 정지됩니다.

find ./ -type f -exec  gsed -i 's/print \'Status Code: {code}\'.format\(code=r.status_code\)/print\(\'Status Code: {code}\'.format\(code=r.status_code\)\)/g' {} \;
> 
> 
> 

답변1

표현식 주위에 큰따옴표를 사용하거나 각 리터럴 주위에 작은따옴표를 닫았다가 다시 열 수 있습니다 . '예를 들면 다음과 같습니다 .'\''

sed "s/print 'Status Code: {code}'.format(code=r.status_code)/print('Status Code: {code}'.format(code=r.status_code))/"


sed 's/print '\''Status Code: {code}'\''.format(code=r.status_code)/print('\''Status Code: {code}'\''.format(code=r.status_code))/'

관련 정보