sed命令用於在線編輯文本,它一次處理一行內容。
命令語法:
sed [-n/e/f/r/i] [cmd] [InFile]
參數解釋:
選項與參數:
-n: quiet/silent,安靜模式,經過sed處理過的行才會被列出來 -e script: 將script腳本添加到要執行的命令中
-f script-file: 將script-file的內容添加到要執行的命令中,即直接運行script-file內的sed命令;
-i: 直接編輯源文件
-r: redxp-extended,在腳本中使用擴展的正則表達式
操作cmd:
c: copy,用新文本替換當前行中的文本
d: delete, 刪除行
i: insert,在當前行之前插入文本
a: add,在當前行之后新增一行或多行
s: separate,替換一行中的部分文本,一般與正則表達式一起使用
p :列印,即將某個選擇的數據列出
栗子
# sed.txt mac 2000 winxp 4000 linux 1000 win7 1000 linux 1000
1. 替換(c)
1)替換第1行為shell
sed '1c shell' sed.txt
結果為:
shell winxp 4000 linux 1000 win7 1000 linux 1000
2)替換1-3行為java
sed '1,3c java' sed.txt
結果為:
java win7 1000 linux 1000
3)嵌入正則表達式,用 / / 包住。替換所有包含 win 的行為python
sed '/win/c python' sed.txt
結果為:
mac 2000 python linux 1000 python linux 1000
2. 刪除(d)
1)刪除第2行
sed '2d' sed.txt
結果為:
mac 2000 linux 1000 win7 1000 linux 1000
2)刪除最后一行($表示最后一行)
sed '$d' sed.txt
結果為:
mac 2000 winxp 4000 linux 1000 win7 1000
3)刪除1-3行
sed '1,3d' sed.txt
結果為:
win7 1000 linux 1000
4)嵌入正則表達式,用 / / 包住。刪除包含 win 的行
sed '/win/d' sed.txt
結果為:
mac 2000 linux 1000 linux 1000
3. 插入(i)
1)所有的行之前插入 ##
sed 'i##' sed.txt
結果為:
## mac 2000 ## winxp 4000 ## linux 1000 ## win7 1000 ## linux 1000
2)1-3行之前插入 0000
sed '1,3i0000' sed.txt
結果為:
0000 mac 2000 0000 winxp 4000 0000 linux 1000 win7 1000 linux 1000
3)嵌入正則表達式,含有 win 的行之前插入****
sed '/win/i*****' sed.txt
結果為:
mac 2000 ***** winxp 4000 linux 1000 ***** win7 1000 linux 1000
4. 新增(a),跟插入類似,只不過這是在選定行之后。
5. 替換(s)
1) 替換 問本中 0 為 9
sed 's/0/9/' sed.txt
結果為:
mac 2900 winxp 4900 linux 1900 win7 1900 linux 1900
你會發現只替換了每行的第一個
要把所有的都替換,可以添加參數 g
sed 's/0/9/g' sed.txt
結果為:
mac 2999 winxp 4999 linux 1999 win7 1999 linux 1999
6. 【 -n 】,一般與 p 聯合使用,增加、刪除、替換行的命令不需要 -n 選項
1)列出第2行數據
sed -n '2p' sed.txt
結果為:
winxp 4000
7. 【 -i 】
1)把源文件 sed.txt 中的所有 0 替換為 9
sed -i 's/0/9/g' sed.txt
命令 cat sed.txt 打開 sed.txt
結果為:
mac 2999 winxp 4999 linux 1999 win7 1999 linux 1999