以下內容參考:命令詳解/
sed是stream editor的簡稱,也就是流編輯器。它一次處理一行內容,處理時,把當前處理的行儲存在臨時緩衝區中,稱為「模式空間」(pattern space),接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到檔案末尾。檔案內容並沒有 改變,除非你使用重定向儲存輸出。
sed命令常用的使用方法為:
sed [option] '常見的option選項:command
' input_file
-n 使用安靜(silent)模式(想不通為什麼不是-s)。在一般sed的用法中,所有來自stdin的內容一般都會被列出到螢幕上。但如果加上-n引數後,則只有經過sed特殊處理的那一行(或者動作)才會被列出來;常用的命令:-e 直接在指令列模式上進行 sed 的動作編輯;
-f 直接將 sed 的動作寫在乙個檔案內, -f filename 則可以執行filename內的sed命令;
-r 讓sed命令支援擴充套件的正規表示式(預設是基礎正規表示式);
-i 直接修改讀取的檔案內容,而不是由螢幕輸出。
c \: 取代/替換字串,c \後面跟上字串s(多行字串可以用\n分隔),則會將當前選中的行替換成字串s;
d: delete即刪除,該命令會將當前選中的行刪除;
i \: insert即插入字串,i \後面跟上字串s(多行字串可以用\n分隔),則會在當前選中的行的前面都插入字串s;
p: print即列印,該命令會列印當前選擇的行到螢幕上;
s: 替換,通常s命令的用法是這樣的:1,2s/old/new/g
,將old字串替換成new字串;其中的g 表示global全域性替換,如果沒有global的話,只會替換每一行中的第乙個匹配的內容;
=: 顯示檔案行號
在sed 命令中的定位問題:
如: 3,表示第3行, 1,5 表示第1-5行, $ 表示最後一行;
/sb/ 表示包含sb的行, /sb/, /2b/ 表示包含 sb至包含 2b的行;
/^ha.*day$/ 表示以ha開頭,以day結尾的行
s/\(.*\)line$/\1/g 表示:\(\)
包裹的內容表示正規表示式的第n部分,序號從1開始計算。本例中只有乙個\(\)
所以\(.*\)
表示正規表示式的第一部分,這部分匹配任意字串,所以\(.*\)line$
匹配的就是以line結尾的任何行。用\1
表示匹配到的第一部分,同樣\2
表示第二部分,\3
表示第三部分,可以依次這樣引用。 所以,它的意思是把每一行的line刪除掉。
舉例使用:
另外,看乙個**:sed'1a \add one
'my.txt
sed'
/sb/c \ 2d
'my.txt
sed -n '
1,4p
' my.txt #顯示第1-4行;
sed'
s/sb/2b/g
'my.txt #替換;
sed'
1,5d
' my.txt #刪除;
Sed 常用命令
1 sed 變數替換 ipp 1.1.1.1 將synrecvd文字中的1.1.1.1都清除 並且刪除空行 echo ipp sed i s ipp g d synrecvd 2 sed 使用條件語句 修改文字,但不能插入一行資料 root a cat c aaabbb cccddd eeefff ...
sed常用命令
toc sed是以行為單位的文字處理工具 sed命令作用a 在匹配項後面加入文字 c字元轉換 d刪除行 d刪除第一行 i在匹配行前面加入文字 h複製模板塊的內容到儲存空間 h追加模板塊的內容到儲存空間 g將儲存空間的內容複製到模式空間 g將儲存空間的內容追加到模式空間 n讀取下乙個輸入行,用下乙個命...
sed常用命令
行頭追加 假設處理的文字為test.file 在每行的頭新增字元,比如 head 命令如下 sed s head g test.file 不加 i 是輸出到螢幕上在每行的行尾新增字元,比如 tail 命令如下 sed s tail g test.file 不加 i 是輸出到螢幕上sed i就是直接對...