鍍金池/ 教程/ Linux/ Sed模式范圍
Sed字符串
Sed實(shí)用功能
Sed管理模式
sed環(huán)境設(shè)置
sed模式緩沖區(qū)
Sed循環(huán)
Sed模式范圍
Sed教程
Sed正則表達(dá)式
Sed分支
Sed基本語(yǔ)法
sed工作流程
Sed特殊字符
Sed基本命令

Sed模式范圍

本教程介紹如何sed處理一個(gè)模式范圍。模式范圍可以是一個(gè)簡(jiǎn)單的文本或復(fù)雜的正則表達(dá)式。我們將開(kāi)始使用下列內(nèi)容的文本文件books.txt:

1) A Storm of Swords, George R. R. Martin, 1216
2) The Two Towers, J. R. R. Tolkien, 352
3) The Alchemist, Paulo Coelho, 197
4) The Fellowship of the Ring, J. R. R. Tolkien, 432
5) The Pilgrimage, Paulo Coelho, 288
6) A Game of Thrones, George R. R. Martin, 864

下面的例子打印的作者所有書(shū)籍 Paulo Coelho

[jerry]$ sed -n '/Paulo/ p' books.txt

執(zhí)行上面的代碼,會(huì)得到如下結(jié)果:

3) The Alchemist, Paulo Coelho, 197 
5) The Pilgrimage, Paulo Coelho, 288

Sed通常運(yùn)行在每一行,并只打印那些符合使用模式的給定條件的行。

我們還可以將一個(gè)模式范圍,地址范圍。下面的例子打印起始行具有Alchemist 的第一行匹配,直到第五行。

[jerry]$ sed -n '/Alchemist/, 5 p' books.txt

執(zhí)行上面的代碼,會(huì)得到如下結(jié)果:

3) The Alchemist, Paulo Coelho, 197 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432 
5) The Pilgrimage, Paulo Coelho, 288

可以使用美元符號(hào)($)發(fā)現(xiàn)的模式第一次出現(xiàn)后打印的所有行。下面的示例查找字符串Fellowship的第一次出現(xiàn),并立即打印該文件中的其余行

[jerry]$ sed -n '/The/,$ p' books.txt

執(zhí)行上面的代碼,會(huì)得到如下結(jié)果:

4) The Fellowship of the Ring, J. R. R. Tolkien, 432
5) The Pilgrimage, Paulo Coelho, 288
6) A Game of Thrones, George R. R. Martin, 864

也可以指定多個(gè)模式范圍使用逗號(hào)(,)運(yùn)算符。下面的例子打印所有模式 Two 和 Pilgrimage 之間存在的行。 

[jerry]$ sed -n '/Two/, /Pilgrimage/ p' books.txt 

執(zhí)行上面的代碼,會(huì)得到如下結(jié)果:

2) The Two Towers, J. R. R. Tolkien, 352 
3) The Alchemist, Paulo Coelho, 197 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432 
5) The Pilgrimage, Paulo Coelho, 288

此外,我們還可以在模式范圍使用的加號(hào)(+)運(yùn)算。下面的例子中發(fā)現(xiàn)模式Two第一次出現(xiàn),并打印它之后的下一個(gè)4行。

[jerry]$ sed -n '/Two/, +4 p' books.txt

執(zhí)行上面的代碼,會(huì)得到如下結(jié)果:

2) The Two Towers, J. R. R. Tolkien, 352 
3) The Alchemist, Paulo Coelho, 197 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432 
5) The Pilgrimage, Paulo Coelho, 288 
6) A Game of Thrones, George R. R. Martin, 864 

在這里,只給出了幾個(gè)例子來(lái)熟悉sed??梢宰约航Y(jié)合上面例子寫(xiě)幾個(gè)例子試試。


上一篇:Sed基本語(yǔ)法下一篇:Sed管理模式