shell编程语言---sed
目录
sed(流编辑)
格式
命令
选项
实战
sed(流编辑)
是一种在线的,非交互的编辑器,他一次处理一行内容。处理时,把当前处理的行存储在缓冲区中,称为"模式空间",接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。sed主要用来自动编辑一个或多个文件;简化对文件的反复操作。
格式
sed 选项 命令 文件sed 选项 -f 脚本 文件返回值
不管对错都是0,只有才语法报错的时候才是非0
命令
d #删除 sed -r '/root/d' passwd
s #替换 sed -r ‘s/^root/aofa/g’ passwd
r #读文件 sed -r '/root/r 1.txt' passwd
w #写文件 sed -r '/root/w 1.txt' passwd
a #追加 sed -r 'a123' passwd #添加多行内容,换行前使用\
i #插入 sed -r '2iaaa' passwd
c #替换整行 sed -r '2caaa' passwd
n #获取下一条命令 sed -r '/root/{n;d}' passwd
! #反向选择 sed -r '2,$!d' passwd
e(;) #多重编辑 sed -r -e '1,3d' -e '4s/^root/rooot/g' passwd
选项
-r #使用扩展正则表达式
-i #直接对内容进行修改
实战
删除配置文件中#号注释行
sed -r '/^#/d' /etc/vsftpd/vsftpd.conf
修改文件
sed -ri '$a\chroot_local_user=YES' /etc/vsftpd/vsftpd.confsed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
添加注释
sed -ri '2,6s/^/#/' a.txtsed -ri '2,6/(.*)/#\1/' a.txtsed -ri '2,6/.*/#&/' a.txt #&直接使用.*的内容不需要加括号
sed中使用外部变量
var=1111 #定义变量sed -ri "1a$var" /etc/hosts #追加变量sed -ri "\$a$var" /etc/hosts