天天看点

shell编程——sed文本操作入门

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

继续阅读