文本處理三劍客:
grep,egrep,fgrep:文本過濾器
sed:stream editor,流編輯器,是一行一行處理的
awk :文本格式化工具,報告生成器
sed工作方式:它是讀一行的文本內容復制到模式空間進行處理(不是在文本內處理的),符合sed模式的進行編輯,不符合的會標準輸出來。
sed 是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space ),接著用sed 命令處理緩沖區中的內容,處理完成后,把緩沖區內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出。Sed 主要用來自動編輯一個或多個文件, 簡化對文件的反復操作, 編寫轉換程序等.
sed也可以一次性執行多行文本內容。
sed [OPTION]… ‘script’ [input-file]…
sed 選項(option) 地址命令
sed的選項
常用選項:
-n :不輸出模式空間中的內容至屏幕;
-e script,–expression=script : 多點編輯;
-f / PATH/TO/SCRIPT_FILE : 從指定文件中讀取編輯腳本
-r,–regexp-extended : 支持使用擴展正則表達式;
-i[SUFFIX], –in-place[=SUFFIX] :直接編輯原文件;(這個命令很危險,使用時需注意,可以先備份要編輯的文件,再使用 -i )
備份(sed -i.備份文件的后綴名 “地址命令” 文件名)
script: ' 地址命令'
地址定界:
1. 空地址:對全文進行處理;
2,單地址:
#:指定行;
/pattern/:被此模式所匹配到的每一行;
3,地址范圍:
#,#;第幾行到第幾行
#,+#:第幾行到從這行開始的以下幾行
#,/pattern/:第幾行到能被模式所匹配的哪一行之間所有行,
/pattern1/,/pattern2/ :
/ /為固定模式
4,步進:~
1-2:所有的奇數行
2-2:所有的偶數行
編輯命令
d:刪除;
p:顯示模式空間中的內容;
a \text:在行后面追加文本“text”,支持使用\n實現多行追加
i \text:在行前面插入文本“text”,支持使用\n實現多行插入
sed –n‘s/root/&superman/p’ /etc/passwd 在單詞后增加
sed –n‘s/root/superman&/p’ /etc/passwd 在單詞前增加
c \text:把匹配到的行替為此除換指定的文本“text”
w /PATH/TO/SOMEFILE:保存模式空間匹配到的行至指定的文件中;
r /PATH/FORM/SOMEFILE:讀取指定文件的內容至當前文件被模式匹配到的行后面;文件合并;
=: 為模式空間中的行打印行號
!: 模式空間中匹配行取反處理
s///(search 搜索) :查找替換, 支持使用其它分隔符,s@@@ ,s###(用搜索到的字符串用后面的字符串代替它)
替換標記:
g: 行內全局替換(使用s///查找替換時 ,加上g : s///g 時會把整行符合的字符串都替換,而不是只替換這一行搜索到的第一個符合的字符串)
p: 顯示替換成功的行
w /PATH/TO/SOMEFILE :將替換成功的 行 保存至文件中
sed 高級編輯命令:
h: 把模式空間中的內容覆蓋至保持空間中(1!G:如果不是第一行就執行把從保持空間
取出內容追加至模式空間, $!d : 如果不是最后一行就執行刪除模式空間中的行)
H :把模式空間中的內容追加至保持空間中
g: 從保持空間取出數據覆蓋至模式空間
G :從保持空間取出內容追加至模式空間
x: 把模式空間中的內容與保持空間中的內容進行互換
n: 讀取匹配到的行的下一行覆蓋至模式空間
N :追加匹配到的行的下一行至模式空間
d: 刪除模式空間中的行
D :刪除 當前模式空間開端至\n 的內容(不在傳至標準輸出),放棄之后的命令,但是對剩余模式空間重新執行sed。
原創文章,作者:AN0519,如若轉載,請注明出處:http://www.www58058.com/35211