sed를 사용하여 텍스트를 바꾸고 관련 일치 줄 끝에 추가하는 방법은 무엇입니까?
많은 대체를 수행하는 sed 파일이 있습니다.
그 중 하나를 사용 ~=
하도록 변경하십시오.match(
/=\~/ s/=\~/match( /
)
이 작업을 수행할 때 관련 줄 끝에 ""(공백 + 닫는 괄호)를 추가하고 싶습니다 (원래 일치 충족).
나는 이 sed 라인으로 이것을 시도했습니다:
/=\~/ s/=\~/match(/ s/$/ )/
하지만 나는 우리가 가장 좋아하는 sed: -e expression #1, char 77: unknown option to
s'`를 얻었습니다
(라인 77, 왜냐하면 이 sed에는 다른 것들이 많이 있기 때문입니다(생략)).
이 줄에 어떻게 )
추가할 수 있나요? 이 게임에서 할 수 있나요? 아니면 다른 회선이 필요합니까? 나는 이 일치 항목에 대해서만 작동하기를 원합니다. 그렇지 않으면 )
"기존" 표현식에 match()
추가 콘텐츠를 추가 하게 될 수도 있습니다.
ㅋㅋㅋ 완전한 sed는...
sed -i 's/\.should/)\.to/
/\.to ==/s/==/eq/
/=\~/ s/=\~/match(/ s/$/ )/ <--- line in question
/[^}.to|end.to]\.to[[:space:]]/ s/\(\S\)/expect(\1/
/[^}.to|end.to]\.to_not[[:space:]]/ s/\(\S\)/expect(\1/
s/[^}.to|end.to].to[[:space:]]/).to /
s/to_receive/to receive/
s/to_not_receive/to_not receive/' ../_spec_seded/"$file"
답변1
이 시도:
sed -r "s/=~(.*)$/match(\1)/" <filename>
또한 발생하는 오류는 sed가 작업 의 /=\~/
필터, s/=\~/match(/
작업 및 s/$/ )/
플래그를 작업을 수행해야 하는 줄로 해석하기 때문에 발생합니다. 이 경우 그룹을 사용하고 표현식을 새 줄과 결합해야 합니다.
sed -re "/=\~/ {
s/=\~/match(/
s/$/ )/
}" <filename>
{}
명령 블록에 대한 관련 문서는 다음과 같습니다.info sed
`{ COMMANDS }'
A group of commands may be enclosed between `{' and `}' characters.
This is particularly useful when you want a group of commands to
be triggered by a single address (or address-range) match.