sed 循環(huán)

與其他編程語言一樣,SED也提供了循環(huán)和分支函數(shù)來控制執(zhí)行流程。在本章中,我們將探索更多有關如何在SED中使用循環(huán)和分支的信息。

SED中的循環(huán)的工作方式類似于 goto 語句。 SED可以跳到標簽所標簽的行,然后繼續(xù)執(zhí)行其余命令。在SED中,我們可以如下定義 label :

:label 
:start 
:end 
:up

在上面的示例中,冒號(:)之后的名稱表示標語法稱。

要跳轉到特定標簽,我們可以使用 b 命令,后跟標語法稱。如果省略標語法稱,則SED跳至SED文件的末尾。

讓我們編寫一個簡單的SED腳本來了解循環(huán)和分支。在我們的books.txt文件中,有幾本書名及其作者的條目。下面的示例將書名及其作者名稱合并在一行中,并用逗號分隔。然后搜索模式" Paulo"。如果該模式匹配,則在該行的前面打印一個連字符(-),否則它將跳轉到 Print 標簽,該標簽將打印該行。

$sed -n ' 
h;n;H;x 
s/\n/,/
/Paulo/!b Print 
s/^/-/
:Print 
p' books.txt

執(zhí)行上述代碼后,您將得到以下輸出

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 

為了提高可讀性,每個SED命令都放在單獨的行上。但是,可以選擇將所有命令放在一行中,如下所示

$sed -n 'h;n;H;x;s/\n/, /;/Paulo/!b Print; s/^/- /; :Print;p' books.txt 

執(zhí)行上述代碼后,您將得到以下輸出

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
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清