Linux sed基礎用法總結

wKiom1epMjSBmc81AAIhN03HQ04708.png

wKioL1epMo3ic5bgAABbQsheook876.png

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

 

高級編輯指令:

高級編輯指令其實就是將模式空間和保持空間中的內容來回互調,實現一些高大上的指令效果。

選項:

wKioL1epMujAiRvtAAJr83hnVvY300.png

高級指令:

以文件c 做爲測試:

wKiom1epM4ThWNMrAAALlWpfH9E159.png

sed -n 'n;p' c

顯示偶數行

wKiom1epM_aQDopNAAAI44hii9M095.png


sed '1!G;h;$!d' c

倒序

wKiom1epND3zgAtGAAAMPVl27x4593.png


sed '$!N;$!D' c

只顯示最後兩行

wKioL1epNJHjCgFuAAAH7gI5E70320.png


sed '$!d' c

顯示最後一行

wKiom1epNWfgqLELAAAKTCpAnPs171.png


sed ‘G’ c

每行後面加空行

wKiom1epNcmxYL6TAAAS9WO6qhw603.png


sed ‘g’ c

全變成空行

wKioL1epNgrB2DQTAAAHigbBJPU339.png

sed‘ /^$/d;G’d

把全部空格先刪了, 而後再來一個空格

以文件d做爲測試對象:

wKioL1epNnLwZqvDAAAPAMdsKpM749.png

測試結果:

wKioL1epNsSgeta_AAAUyzl6t00072.png


sed 'n;d' c

顯示奇數行

wKioL1epNwfgG1n_AAAMjYrUtzg268.png

sed -n '1!G;h;$p' c

逆序

wKiom1epN2qAzln-AAAPInxq5EE434.png

相關文章
相關標籤/搜索