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' #过滤后删除