sed 문서에서 "sed는 입력을 한 번만 전달하여 작동합니다."라고 읽었습니다.
sed -f my_script.sed
이전에 스크립트에서 수행한 작업을 포함하여 여러 작업을 수행하는 sed 스크립트(다음과 같이 실행)를 작성하고 싶습니다 .
편집된 스트림 콘텐츠에 대해 두 번째(또는 n번째) 패스를 수행할 수 있습니까?
예를 들어:
- 초기 스트림 콘텐츠:
titi
- 첫 번째 통과 후 콘텐츠 스트리밍:
/titi/ i (
/titi/ a )
$ cat test.txt
(
titi
)
- 다시 통과함:
s/(/{/g
s/)/}/g
나는 출력을 원한다.
$ cat test.txt
{
titi
}
.sed
이는 단일 스크립트 내에서 이전 명령에 영향을 미치는 스트림 버전을 실행하려는 예일 뿐입니다 .
답변1
sed
하나의 입력 스트림 패스만 얻습니다. 이는 매뉴얼 페이지(적어도 Fedora 33에서는)에 명확하게 명시되어 있습니다.
이와 같은 작업을 수행해야 할 때마다 후속 편집을 sed
위해 의 출력을 의 두 번째 인스턴스로 파이프합니다 .sed