sed說明
vim可編輯文本,Shell腳本中無法使用vim
sed指令可對文本進行更改、删除、添加、列印,可以直接修改文本檔案
示例文本檔案/tmp/jackin.txt
Port 22 Port 22 Port 22
PermitRootLogin yes
Port 22
PasswordAuthentication yes
ListenAddress 10.175.201.36
sedsedsed
//note
nouse
sed文法
sed '過濾+動作' 檔案路徑
sed過濾
預設無過濾,每一行都處理
/^Port/ #正則過濾Port
2,$ #指定行數,n代表第n行,$代表最後一行
/PermitRootLogin/,/ListenAddress/ #包含PermitRootLogin的行開始,包含ListenAddress的行結束
sed動作
p 列印動作
a 在行下面添加
i 在行上面添加
d 删除
s/str1/str2/g 全局查找替換,str1替換成st2
s/str1/str2/ 查找替換,每行第一次出現的替換
sed列印動作,跟-n結合使用
cat /tmp/jackin.txt | sed -n '/^Port/p'
cat /tmp/jackin.txt | sed -r -n '/^Port+/p' #sed預設不支援擴充正則,sed -r
cat /tmp/jackin.txt |sed -n '3,$p'
cat /tmp/jackin.txt |sed -n '/PermitRootLogin/,/sed/p'
sed添加文本
cat /tmp/jackin.txt | sed 'a jackin' #行後增加
cat /tmp/jackin.txt | sed 'i jackin' #行前增加
cat /tmp/jackin.txt | sed 'a \ jackin' #需要增加空格,使用反斜杠
cat /tmp/jackin.txt|sed '/sedsedsed/a \ jackin add' #過濾加動作
sed删除
cat /tmp/jackin.txt |sed '/^Port/d' #過濾後删除