텍스트 주위에 괄호를 추가하는 방법

텍스트 주위에 괄호를 추가하는 방법

sed를 사용하여 텍스트를 바꾸고 관련 일치 줄 끝에 추가하는 방법은 무엇입니까?

많은 대체를 수행하는 sed 파일이 있습니다.

그 중 하나를 사용 ~=하도록 변경하십시오.match(/=\~/ s/=\~/match( /

)이 작업을 수행할 때 관련 줄 끝에 ""(공백 + 닫는 괄호)를 추가하고 싶습니다 (원래 일치 충족).

나는 이 sed 라인으로 이것을 시도했습니다:

/=\~/ s/=\~/match(/ s/$/ )/

하지만 나는 우리가 가장 좋아하는 sed: -e expression #1, char 77: unknown option tos'`를 얻었습니다
(라인 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.

관련 정보