概述:sed是一種流編輯器,他一次處理一行內容,處理時他會把當前的行存儲在臨時的緩沖區中,稱為模式空間,接著用sed命令處理緩沖區的內容,處理完成后,把緩沖區中的內容送到屏幕中,接著讀入下一行,執行下一個循環,這樣不斷的重復,直到文件的末尾,文件內容并沒有改變,除非使用重定向存儲輸出。sed總是以行對輸入處理,sed處理的不是原文件而是源文件的拷貝。
功能:主要用來自動編輯一個或多個文件,簡化對文件的反復操作,編寫轉換程序等。
在sed工具中會自動的開辟一個內存空間(模式空間patterm space),自動讀取文件中的一行,可以根據sed指令切割成一個小的和字段一樣,可以一段一段開處理,處理完自動這行就沒有了,處理結果可以顯示和修改,接著讀入下一行,執行下一個循環。
用法:
sed [option]… ‘script’ inputfile…?? (script是地址命令)
- -n 不輸出模式空間內容到屏幕,不自動打?。ㄊ勾蛴热葜伙@示一遍)
- -e 多點編輯,可以有多個script
- -f 從指定文件中讀取編輯腳本
- -r 支持使用擴展正則表達式
- -i.bak:備份文件并原處編輯
地址定界:
1.不給地址:對全文進行處理
2.單地址:#:指定的行,$:最后一行,/pattern/:被此模式能夠匹配到的每一行
3.地址范圍:#,#(從幾行到第幾行)。#,+#(第幾行到這行之后多少行)。/pat1/,/pat2/(兩個模式之間的行)。#,/pat1/(從第#行開始找,一直找到符合part1條件的行)。
4.~:步進,1~2 奇數行 2~2偶數行
編輯命令:
-p打印當前模式空間內容,追加到默認輸出之后
-d 刪除模式空間匹配的行,并立即啟用下一輪循環
a[\]text:在指定行后面追加文本 (補空格 \)
i[\]text在行前面插入文本
c[\]text 替換行為單行或多行文本。(將Source那行替換為xxxxx)可替換配置文件
w /path/somefile :保存模式匹配的行至指定文件(例,將bash中以alias開頭的行拿出來存到另一個文件中)
r /path/somefile 讀取指定文件的文本至模式空間中匹配到的行后。例,讀取release文件到以 alias開頭的行的后面。
!模式空間中匹配行取反處理,(除了。。。干什么事)例打印除了bash結尾的所有的行
s///:搜索替代(查找替換),支持使用其他分隔符,s@@@,s###
替換標記:(命令中前面是正則表達式,后面是字符串)
g:行內全局替換
p:顯示替換成功的行
w:將替換成功的行保存至文件中
例:將/etc/passwd文件中bash結尾的行替換成nologin
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/96260