스트림 편집기-분기

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