1. 程式人生 > 實用技巧 >Linux三劍客中的第二劍——Sed(文字編輯器)

Linux三劍客中的第二劍——Sed(文字編輯器)

文字處理三劍客:

第一劍:grep、egrep、fgrep 文字搜尋工具

第二劍:sed 全稱Strema Editor,一種強大的文字編輯器

第三劍:Awk 文字格式化工具,文字報告生成器

本文主要描述第二劍:sed 文字編輯器

Sed是對檔案內容進行逐行處理,一行一行的進行。它處理的並不是原資料,而是將目標檔案複製以後在處理。

Sed用法:sed [OPTION]... {script-only-if-no-other-script} [input-file]...

script:來指明對文字進行什麼樣的操作(地址定界+編輯命令)

Sed常用選項:

-n:不輸出模式空間中的內容到螢幕上(模式空間:sed工作的地方,對文字進行處理、加工)

(如果配合d命令,則不會顯示任何內容。如果配合p命令,則只顯示匹配到的內容)

-e:在一個sed中可以編輯多個指令碼(執行多個命令)

-f:每行編輯一個命令/PATH/TO/SED_SCRIPT_FILE

-r:支援使用擴充套件正則表示式

-i:直接編輯原檔案

地址定界:

(1)空地址(不指明文字中的某一行):對全文進行處理

(2)單地址(指定一個數字):

#:明確文字中的第幾行

/PATTERN/:顯示每一行中有此模式的行

(3)地址範圍(起始,結束):中間用逗號隔開

#,#:從第幾行到第幾行

#,+#:顯示從#行開始,在顯示+#行。

例如:“3,+8” 意思是從第三行開始,再往下顯示八行(總共顯示了9行)

#,/part/:顯示從指定的#行開始直到第一次被模式所匹配到的之間的行

/partten1/,/partten2/:顯示第一次被模式匹配和第二次被模式匹配之間的行

(4)步進:

1~2:顯示所有的奇數行

       2~2:顯示所有的偶數行


編輯命令:

d:刪除指定的行

例:把wxpp檔案中的第2-5行刪除掉

wKiom1buQgvAruJOAABJI9R4F20094.png

p:指定的行顯示2次

例:把wxpp檔案中奇數行顯示2次

wKioL1buRjuzcFJBAAAg5h2cB7A541.png

a: 在匹配到的下方追加文字(模式:\text);多行追加(\text\ntext)

例:在wxpp檔案中的第三行追加2行“wtc xi huan wxpp”“wxpp xi huan wtc”

wKiom1buT06R7HTPAAAk8iBPMS4294.png

如果想全文都追加“wtc xi huan wxpp”,把命令中的地址定界“3”刪除掉即可,如下圖

wKiom1buSizDXqEkAAA0S_tCYW0111.png

i:在匹配到的行上方插入本文(模式:\text)

例:在wxpp檔案中的第3行插入“wtc xi huan wxpp”

wKiom1buTCmBryupAAAf2BzzLj4752.png

c:把匹配到的行替換為指定的文字(模式:\text)(注意:整行替換)

例:把wxpp檔案中第2-5行換成“wxpp xi huan wtc”

wKiom1buUCLgVXNhAAAZwRd0W5w169.png

注意:把2-5行換成“wxpp xi huan wtc”是把2-5行看成一個整體,替換為“wxpp xi huan wtc”

w:把模式空間中的內容儲存在指定的檔案中

例:把/etc/stab中以UUID的開頭的行儲存知道/tmp/wtc中

wKioL1buVO_zIfHbAABLQg5ysPE666.png


r:把指定檔案的內容加入到匹配模式行的後面(檔案合併,把一個檔案中的內容穿插到另一個檔案中)

例:把wtc中的內容穿插到wxpp中的第四行後面

wKiom1buV8KDw5TiAAAktqPHatM606.png


=:把匹配到的行前面加上行數

例:給fstab中以UUID開頭的行註明是第幾行

wKiom1buWQ_zD1_uAAAtX1jGHlo251.png

!:條件取反(寫在模式後面)

例:刪除fstab下面以非#開頭的行

wKiom1buWhDDRZFqAAA7zNH36A8929.png



s///:查詢替換。其分隔符可以自行制定,常用的有[email protected]@@、s###等。

例:刪除fstab檔案中以#號開頭的行。(把#號替換成什麼都沒有)

wKioL1buXzKhEA2tAAAqoVNVM34331.png

轉載於:https://blog.51cto.com/wangtianci/1753149