pattern space // 文本中每行內容都會進入到pattern space中, 若是匹配到了,就會進入到右分支, 若是沒有匹配到,則進入左分支。正則表達式
hold space // 就是已經被模式匹配到, 而且編輯後保存的內容就是hold space 中.ide
默認狀況下,當沒有被匹配以後,沒有匹配到內容也會被輸出到屏幕之上, 一旦被模式匹配上, 就分爲兩種操做, 一種是標準輸出, 另一種則是編輯。測試
sed 用法: sed [option]... ‘script’ inputfilespa
選項[option]:3d
-n: 不輸出模式空間的內容(屏蔽自動輸出)orm
-e: 多點編輯對象
-f: 文件,文件中放地址命令blog
-r: 支持擴展的正則表達式圖片
-i: 在文件中直接編輯ip
‘script’ == ‘地址命令’
地址和命令之間沒有任何符號。
地址定界:
(1). 不給地址,直接操做, 對全文操做
(2) 單地址
1>. #
2>. /pattern/ 被此處模式匹配到的每一行
3>.$ 表示最後一行
(3) 地址範圍
1>. #,# 兩個指定行中的全部行,包括兩個指定行
2>.#,+# +# 同上
3>./part1/,/part2/ 兩次匹配行之間的全部行,包括匹配到的行
4>.#,/part/ 指定行到匹配的行
(4)~ 步進
1~2 全部的奇數行
2~2 全部的偶數行
基礎編輯指令:
(1). d 刪除匹配到的行
(2). p 顯示匹配到的行 通常要與-n一塊兒用,不然被匹配到行會顯示兩次
(3). c 替換匹配的字符串或者行
(4). a 在匹配到行尾追加內容
(5) i 在匹配到行首添加內容
(6) w /path/to/file 將sed匹配編輯後的內容保存到另一份文件中
(7) r /path/to/file 將指定文件的內容追加到匹配到行以後
(8) = 打印行號
(9) ! 模式空間中匹配行取反處理
替換操做: 刪除或者編輯行中部份內容的時候,要使用替換操做
s/匹配到到內容/替換的內容/替換標記
替換標記:
g: 全局替換(整行都替換) 默認只替換第一個匹配到的內容
p: 顯示替換成功的行
w: 將替換成功的行指定到模文件中 w /path/to/file
高級編輯指令:
高級編輯指令其實就是將模式空間和保持空間中的內容來回互調,實現一些高大上的指令效果。
選項:
高級指令:
以文件c 做爲測試:
sed -n 'n;p' c
顯示偶數行
sed '1!G;h;$!d' c
倒序
sed '$!N;$!D' c
只顯示最後兩行
sed '$!d' c
顯示最後一行
sed ‘G’ c
每行後面加空行
sed ‘g’ c
全變成空行
sed‘ /^$/d;G’d
把全部空格先刪了, 而後再來一個空格
以文件d做爲測試對象:
測試結果:
sed 'n;d' c
顯示奇數行
sed -n '1!G;h;$p' c
逆序