위에 주어진 코드를 시도했습니다중괄호 사이의 텍스트 제거
하지만 sed 이벤트에서는 다른 오류가 발생했습니다.
파일에는 다음이 포함됩니다.
This is {
{the multiline
text} file }
that wants
{ to {be
changed}
} anyway.
sed ':again;$!N;$!b again; s/{[^}]*}//g' file
운동 중에 무엇이 잘못될 수 있나요?
실수
N: Event not found.
답변1
히스토리 확장 실행을 !
방지하려면 이스케이프해야 합니다 . 작은 따옴표로 작성 csh/tcsh
하더라도 여전히 히스토리 확장을 수행합니다.!
노력하다:
sed ':again;$\!N;$\!b again; s/{[^}]*}//g' file
또는 호출할 스크립트를 작성할 수도 있습니다 -f script.sed
(읽기sed FAQ).
답변2
잘 모르겠지만 tcsh
역사 확장 질문처럼 들립니다. bash
작은 따옴표로 히스토리 확장을 방지할 수 있습니다. 그렇지 않을 수도 있습니다 tcsh
.
기록 확장을 비활성화할 수 있습니다(하지만 어떻게 해야 할지 모르겠습니다. bash
에서 수행합니다 set +H
).
또 다른 옵션: 백슬래시 이스케이프가 작동해야 합니다. 노력하다
sed_code=":again;\$\!N;\$\!b again; s/{[^}]*}//g"
sed "$sed_code" file