shell腳本--sed工具

sed正則表達式

sed:它叫作流式編輯器,它的工做場景通常是在編輯器中,把一段文本按行讀入sed中而後按指定的方式輸出,這是它最基本的用法。vim


1、sed的基本操做:app


一、/pattern/action編輯器

pattern爲正則表達式,對知足pattern的行做action操做ide

例如工具

wKiom1duKazSiX3tAACGTNIcYbc267.png

這條命令和grep基本同樣,其中-n的意思是隻將執行後面指令的顯示出來,若是不加-n選項則會把全部信息顯示以便而且把匹配到的多顯示一遍,p的意思是打印,若是改爲d則是刪除。-i的話則會修改源文件學習


二、/pattern/s/pattern1/pattern2/ 查找到第一個pattern所對應的行,而後將其中的pattern1轉換爲pattern2spa

例如blog

wKioL1duK3zyZ5WvAABdYMNro4g272.png

g的做用是將這一行中全部知足條件的元素都替換掉get


3,範圍控制

wKioL1duLDmR8sqnAABC2DQDt_8086.png



2、sed的高級操做


sed的高級操做來源於它的兩個空間,一個叫作模式空間,另外一個叫作保持空間,在不顯示用命令去使用保持空間的時候,它一直就工做在模式空間中,它的工做方式是這樣的,按行讀取到模式空間下進行操做後再輸出,而後再拿下一行。

保持空間的命令

g:將hold space中的內容拷到pattern space中,

G:將hold space中的內容append到patternspace\n後

h:將pattern space中的內容拷貝到hold space中,

原來的hold space裏的內容被清除

H:將pattern space中的內容append到holdspace\n後

d:刪除pattern中的全部行,並讀入下一新行到pattern中

D:刪除multiline pattern中的第一行,不讀入下一行

x:交換保持空間和模式空間的內容


例1:將上面的file中的每一行的結尾加一個空格

wKiom1duMVPDdgV8AAAu-rCXYpM086.png


例二:行列轉換

wKiom1duM8GwkGhlAAAzQftjqxM341.png


注意:使用H的做用是將每一行都追加到保持模式下,而後在最後將保持空間下的數據交換到

模式空間而後執行替換操做,sed時按行去讀取的,讀取一行的時候是看不到\n的,只能將所

有數據所有H到保持空間保存起來,才找的到。


例三:倒序打印

wKioL1duNrGzu6hdAAA0TydRBGo108.png


從字面上理解,第一行不從保持空間G,最後一行不用刪除模式空間

中的數據,其餘行先G,而後h,以後d。


例四:1到100的求和

wKioL1duOiHBHdL3AABHqvXixB4106.png

這個和上面的是相似的。



總結:sed工具的學習主要是多加練習,它更多的是工做在編輯器下對文本的操做

   例如vim編譯器下底行模式就能夠用s///命令進行替換。

相關文章
相關標籤/搜索