sed正則表達式
sed:它叫作流式編輯器,它的工做場景通常是在編輯器中,把一段文本按行讀入sed中而後按指定的方式輸出,這是它最基本的用法。vim
1、sed的基本操做:app
一、/pattern/action編輯器
pattern爲正則表達式,對知足pattern的行做action操做ide
例如工具
這條命令和grep基本同樣,其中-n的意思是隻將執行後面指令的顯示出來,若是不加-n選項則會把全部信息顯示以便而且把匹配到的多顯示一遍,p的意思是打印,若是改爲d則是刪除。-i的話則會修改源文件學習
二、/pattern/s/pattern1/pattern2/ 查找到第一個pattern所對應的行,而後將其中的pattern1轉換爲pattern2spa
例如blog
g的做用是將這一行中全部知足條件的元素都替換掉get
3,範圍控制
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中的每一行的結尾加一個空格
例二:行列轉換
注意:使用H的做用是將每一行都追加到保持模式下,而後在最後將保持空間下的數據交換到
模式空間而後執行替換操做,sed時按行去讀取的,讀取一行的時候是看不到\n的,只能將所
有數據所有H到保持空間保存起來,才找的到。
例三:倒序打印
從字面上理解,第一行不從保持空間G,最後一行不用刪除模式空間
中的數據,其餘行先G,而後h,以後d。
例四:1到100的求和
這個和上面的是相似的。
總結:sed工具的學習主要是多加練習,它更多的是工做在編輯器下對文本的操做
例如vim編譯器下底行模式就能夠用s///命令進行替換。