sed並不會改變原文件,所以的操作是原文件的一個拷貝,可以將結果重定向到新文件。在使用的時候用的最多的是三種方式(在命令行鍵入命令;將 s e d命令插入腳本文件,然後調用 s e d;將s e d命令插入腳本文件,並使s e d腳本中的一種)中的命令行鍵入方式。
格式:
sed [選項] s e d命令 輸入文件。
*選項
---------------------------------------------------------
s e d選項如下:
n 不打印;s e d不寫編輯行到標准輸出,缺省為打印所有行(編輯和未編輯)。
p 命令可以用來打印編輯行。
c 下一命令是編輯命令。使用多項編輯時加入此選項。如果只用到一條 s e d命令,
此選項無用,但指定它也沒有關系。
f 如果正在調用s e d腳本文件,使用此選項。此選項通知 s e d一個腳本文件
支持所有的s e d命令,例如:sed -f myscript.sed input_file,這裡m y s c r i p t . s e
d即為支持s e d命令的文件。
---------------------------------------------------------
*查找匹配
使用s e d在文件中定位文本的方式:
---------------------------------------------------------
x x為一行號,如1
x , y 表示行號范圍從x到y,如2,5表示從第2行到第5行
/ p a t t e r n / 查詢包含模式的行。例如/ d i s k /或/[a-z]/
/ p a t t e r n / p a t t e r n / 查詢包含兩個模式的行。例如/ d i s k
/ d i s k s /
p a t t e r n / , x 在給定行號上查詢包含模式的行。如/ r i b b o n / , 3
x , / p a t t e r n / 通過行號和模式查詢匹配行。3 ,/ v d u /
x , y ! 查詢不包含指定行號x和y的行。1 , 2 !
---------------------------------------------------------
sed編輯命令:
---------------------------------------------------------
*p 打印匹配行
sed '/np' in.txt
sed '/pattern/'p in.txt
*= 顯示文件行號
sed -e '/pattern/=' in.txt (all lines)
sed -n '/pattern/=' in.txt (only cared lines)
*a \ 在定位行號後附加新文本信息
sed [address]a\
*i \ 在定位行號後插入新文本信息
sed [address]i\
*d 刪除定位行
[ a d d r e s s [,a d d r e s s ] ] d
*c \ 用新文本替換定位文本
[ a d d r e s s [,address]] s/ pattern-to-find /replacement-pattern/
[g p w n]
*s 使用替換模式替換相應模式
sed -n '/op/np &/p' text.txt
*r 從另一個文件中讀文本
sed '/begin-pattern./r in.txt' out.txt
*w 寫文本到一個文件
sed '/begin-pattern/ w in.txt' out.txt
*q 第一個模式匹配完成後推出或立即推出
ex: sed '/.a.*/q' in.txt
*l 顯示與八進制A S C I I代碼等價的控制字符
{ } 在定位行執行的命令組
n 從另一個文件中讀文本下一行,並附加在下一行
g 將模式2粘貼到/pattern n/
y 傳送字符
n 延續到下一輸入行;允許跨行的模式匹配語句
---------------------------------------------------------
*快速一行命令
---------------------------------------------------------
‘s / \ . $ / / g’ 刪除以句點結尾行
‘-e /abcd/d’ 刪除包含a b c d的行
‘s / [ ] [ ] [ ] * / [ ] / g’ 刪除一個以上空格,用一個空格代替
‘s / ^ [ ] [ ] * / / g’ 刪除行首空格
‘s / \ . [ ] [ ] * / [ ] / g’ 刪除句點後跟兩個或更多空格,代之以一個空格
‘/ ^ $ / d’ 刪除空行
‘s / ^ . / / g’ 刪除第一個字符
‘s /CO L \ ( . . . \ ) / / g’ 刪除緊跟C O L的後三個字母
‘s / ^ \ / / / g’ 從路徑中刪除第一個\
‘s / [ ] / [ ] / / g’ 刪除所有空格並用t a b鍵替代
‘S / ^ [ ] / / g’ 刪除行首所有t a b鍵
‘s / [ ] * / / g’ 刪除所有t a b鍵
---------------------------------------------------------