shell的sed命令


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM