내 파일에는 1500줄이 있고 줄 번호 1449를 변경하고 싶습니다. 다음 명령을 사용할 수 있다는 것을 알고 있습니다.
sed -i '1449s/"'$' == $rdn{ strlen($rdn) - 1 })"/'$' == $rdn[ strlen($rdn) - 1 ])/' file_name
하지만 작동하지 않습니다. 나는 바꾸고 싶다
'$' == $rdn{ strlen($rdn) - 1 })
도착하다
'$' == $rdn[ strlen($rdn) - 1 ])
sed에서 지정된 줄 번호로 바꾸는 방법을 아는 사람이 있으면 안내해 주세요.
답변1
문제는 줄 번호 sed
나 따옴표가 아닙니다. 작은 따옴표 안에 큰 따옴표를 중첩할 수 없으므로 '1449s/"'
일치하는 작은 따옴표가 있으므로 스크립트 1449s/"$ ==
는 등으로 시작됩니다.
그렇지 않은 경우 패턴이 고유할 수 있으므로 '$'
작은따옴표만 사용할 수 있습니다.
sed -i '1449s/ == $rdn{ strlen($rdn) - 1 })/ == $rdn[ strlen($rdn) - 1 ])/' file_name
또는 전체 내용을 큰따옴표로 묶었지만 $
셸에서 이스케이프해야 합니다.
sed -i "1449s/'\$' == \$rdn{ strlen(\$rdn) - 1 })/'\$' == \$rdn[ strlen(\$rdn) - 1 ])/" file_name
또는 마지막으로 줄에 아무것도 포함되어 있지 않거나 {
바꾸려 }
는 줄만 제외하면 다음 y
명령을 사용할 수 있습니다.
sed -i '1449y/{}/[]/' file_name
답변2
sed -i -e "1449s/})$/])/g" -e "1449s/{ strlen/[ strlen/g" filename
산출
'$' == $rdn[ strlen($rdn) - 1 ])