sed是一個非交互性文本流編輯器。它編輯文件或標準輸入導出的文本拷貝。標準輸入可
能是來自鍵盤、文件重定向、字符串或變量,或者是一個管道的文本。sed能夠作些什麼呢?
別忘了,Vi也是一個文本編輯器。sed能夠隨意編輯小或大的文件,有許多sed命令用來編輯、
刪除,並容許作這項工做時不在現場。sed一次性處理全部改變,於是變得頗有效,對用戶來
講,最重要的是節省了時間。
一、sed怎樣讀取數據
sed從文件的一個文本行或從標準輸入的幾種格式中讀取數據,將之拷貝到一個編輯緩衝
區,而後讀命令行或腳本的第一條命令,並使用這些命令查找模式或定位行號編輯它。重複
此過程直到命令結束。
二、調用sed
使用sed命令行格式爲:
sed [選項] sed命令 輸入文件
使用sed腳本文件,格式爲:
sed [選項] -f sed腳本文件 輸入文件
要使用第一行具備sed命令解釋器的sed腳本文件,其格式爲:
sed腳本文件 [選項] 輸入文件
sed選項
n 不打印;sed不寫編輯行到標準輸出,缺省爲打印全部行(編輯和未編輯)。p命令能夠
用來打印編輯行。
c 下一命令是編輯命令。使用多項編輯時加入此選項。若是隻用到一條sed命令,
此選項無用,但指定它也沒有關係。
f 若是正在調用sed腳本文件,使用此選項。此選項通知sed一個腳本文件支持全部的sed
命令,例如:sed-fmyscript.sedinput_file,這裏myscript.sed即爲支持sed命令的文件。
保存sed輸出
簡單地將全部輸出重定向到一個文件便可
#sed 'some-sed-commands' input-file > somefile
使用sed在文件中定位文本的方式
x x爲一行號,如1
x,y 表示行號範圍從x到y,如2,5表示從第2行到第5行
/pattern/ 查詢包含模式的行。例如/disk/或/[a-z]/
/pattern/pattern/ 查詢包含兩個模式的行。例如/disk/disks/
pattern/,x 在給定行號上查詢包含模式的行。如/ribbon/,3
x,/pattern/ 經過行號和模式查詢匹配行。3./vdu/
x,y! 查詢不包含指定行號x和y的行。1,2!
sed編輯命令
p 打印匹配行
= 顯示文件行號
a\ 在定位行號後附加新文本信息
i\ 在定位行號後插入新文本信息
d 刪除定位行
c\ 用新文本替換定位文本
s 使用替換模式替換相應模式
r 從另外一個文件中讀文本
w 寫文本到一個文件
q 第一個模式匹配完成後推出或當即推出
l 顯示與八進制A S C I I代碼等價的控制字符
{} 在定位行執行的命令組
n 從另外一個文件中讀文本下一行,並附加在下一行
g 將模式2粘貼到/pattern n/
y 傳送字符
n 延續到下一輸入行;容許跨行的模式匹配語句
使用p(rint)顯示行
print 命令格式爲[address[,address]P。顯示文本行必須提供sed命令行號
#sed '2p' somefile
只打印匹配行
#sed -n '2p' somefile
打印範圍
能夠指定行的範圍,現打印1到3行,用逗號分隔行號
#sed -n '1,3p' somefile
打印模式
假定要匹配單詞Neave,並打印此行,方法以下。使用模式/pattern/格式,這裏爲/Neave/
#sed -n '/Neave/'p somefile
匹配元字符
匹配元字符$前,必須使用反斜線\屏蔽其特殊含義。模式爲/\$/ p
#sed -n '/\$/'p somefile
顯示整個文件
要打印整個文件,只需將行範圍設爲第一行到最後一行 1,$。$意爲最後一行
#sed -n '1,$p' somefile
打印行號
要打印行號,使用等號=。打印模式匹配的行號,使用格式 /pattern/=
#sed -e '/music/=' somefile
若是隻關心實際行號,使用 - e選項
替換文本
替換命令用替換模式替換指定模式,格式爲:
[address[,address]]s/pattern-to-find/replacement-pattern/[gpwn]
s 選項通知s e d這是一個替換操做,並查詢 pattern-to-find,成功後用replacement-pattern替
換它。
替換選項以下:
g 缺省狀況下只替換第一次出現模式,使用 g選項替換全局全部出現模式。
p 缺省sed將全部被替換行寫入標準輸出,加 p選項將使- n選項無效。- n選項不打印輸出
結果。
w 文件名 使用此選項將輸出定向到一個文件。
快速一行命令 []表示空格,[ ]表示tab鍵
‘s/\.$//g’ 刪除以句點結尾行
‘-e/abcd/d’ 刪除包含abcd的行
‘s/[][][]*/[]/g’刪除一個以上空格,用一個空格代替
‘s/^[][]*//g’ 刪除行首空格
‘s/\.[][]*/[]/g’刪除句點後跟兩個或更多空格,代之以一個空格
‘/^$/d’ 刪除空行
‘s/^.//g’ 刪除第一個字符
‘s/COL\(...\)//g’刪除緊跟COL的後三個字母
‘s/^\///g’ 從路徑中刪除第一個\
‘s/[]/[]//g’ 刪除全部空格並用tab鍵替代
‘S/^[]//g’ 刪除行首全部tab鍵
‘s/[]*//g’ 刪除全部tab鍵編輯器