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行刪除掉
p:指定的行顯示2次
例:把wxpp檔案中奇數行顯示2次
a: 在匹配到的行下方追加文字(模式:\text);多行追加(\text\ntext)
例:在wxpp檔案中的第三行追加2行“wtc xi huan wxpp”“wxpp xi huan wtc”
如果想全文都追加“wtc xi huan wxpp”,把命令中的地址定界“3”刪除掉即可,如下圖
i:在匹配到的行上方插入本文(模式:\text)
例:在wxpp檔案中的第3行插入“wtc xi huan wxpp”
c:把匹配到的行替換為指定的文字(模式:\text)(注意:整行替換)
例:把wxpp檔案中第2-5行換成“wxpp xi huan wtc”
注意:把2-5行換成“wxpp xi huan wtc”是把2-5行看成一個整體,替換為“wxpp xi huan wtc”
w:把模式空間中的內容儲存在指定的檔案中
例:把/etc/stab中以UUID的開頭的行儲存知道/tmp/wtc中
r:把指定檔案的內容加入到匹配模式行的後面(檔案合併,把一個檔案中的內容穿插到另一個檔案中)
例:把wtc中的內容穿插到wxpp中的第四行後面
=:把匹配到的行前面加上行數
例:給fstab中以UUID開頭的行註明是第幾行
!:條件取反(寫在模式後面)
例:刪除fstab下面以非#開頭的行
s///:查詢替換。其分隔符可以自行制定,常用的有[email protected]@@、s###等。
例:刪除fstab檔案中以#號開頭的行。(把#號替換成什麼都沒有)
轉載於:https://blog.51cto.com/wangtianci/1753149