스트림 편집기-분기
t 명령을 사용하여 분기를 만들 수 있습니다. 그만큼t명령은 이전 대체 명령이 성공한 경우에만 레이블로 이동합니다. 이전 장에서와 동일한 예제를 보겠습니다. 그러나 단일 하이픈 (-)을 인쇄하는 대신 이제 4 개의 하이픈을 인쇄합니다. 다음 예는t 명령.
[jerry]$ sed -n '
h;n;H;x
s/\n/, /
:Loop
/Paulo/s/^/-/
/----/!t Loop
p' books.txt
위의 코드가 실행되면 다음과 같은 결과가 나옵니다.
A Storm of Swords, George R. R. Martin
The Two Towers, J. R. R. Tolkien
----The Alchemist, Paulo Coelho
The Fellowship of the Ring, J. R. R. Tolkien
----The Pilgrimage, Paulo Coelho
A Game of Thrones, George R. R. Martin
위의 예에서 처음 두 명령은 자명합니다. 세 번째 명령은 레이블을 정의합니다.Loop. 네 번째 명령은 행에 "Paulo"문자열이 포함되어있는 경우 하이픈 (-)을 앞에 추가합니다.t 명령은 행 시작 부분에 네 개의 하이픈이있을 때까지 절차를 반복합니다.
가독성을 높이기 위해 각 SED 명령은 별도의 줄에 작성됩니다. 그렇지 않으면 다음과 같이 한 줄짜리 SED를 작성할 수 있습니다.
[jerry]$ sed -n 'h;n;H;x; s/\n/, /; :Loop;/Paulo/s/^/-/; /----/!t Loop; p' books.txt
위의 코드가 실행되면 다음과 같은 결과가 나옵니다.
A Storm of Swords, George R. R. Martin
The Two Towers, J. R. R. Tolkien
----The Alchemist, Paulo Coelho
The Fellowship of the Ring, J. R. R. Tolkien
----The Pilgrimage, Paulo Coelho
A Game of Thrones, George R. R. Martin