亚洲区国产区激情区无码区,国产成人mv视频在线观看,国产A毛片AAAAAA,亚洲精品国产首次亮相在线

sed 循環(huán)

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

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

:label 
:start 
:end 
:up

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

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

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

$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 

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

$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