sed介绍
sed 是一种在线的、非交互式的编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出;Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等
sed语法格式
sed [options] 'command' in_file[s]
options部分
-n 静默输出(不打印则默认不输出)
显示a.txt中的第一行
sed -n "1p" a.txt
-e 给予sed多个命令的时候需要-e选项
也可以使用“;”将多个命令分隔开
sed -e "s/root/ROOT/G" -e "s/bash/www/g" passwd > passwd.bak
sed "s/root/ROOT";"s/wwww/kkkk/g" passwd | less
-i -i后面没有扩展名的话直接修改文件,如果有扩展名备份源文件,产生以扩展名结尾的新文件
sed -i.bak "s/root/ROOT/g" passwd
-f 当有多个要编辑的项目时,可以将编辑命令放进一个脚本里,在使用sed搭配-f选项
cat s.sed
s/bin/a/g
s/ftp/b/g
s/mail/c/g
sed -f s.sed passwd | less
command部分
p 打印行 1p 输出再打印一遍第一行 1~2 打印奇数 0~2打印偶数
#打印偶数行
sed -n "0~2p" /etc/password
#打印奇数行
sed -n "1~2p" /etc/password
d 删除文本
sed '1 d' passwd
sed '$ d' passwd
sed '1,3 d' passwd
sed '1,/^dian/ d' passwd
a 追加文本(后)
sed '2 a nihao' passwd
sed '/^dian/ a nihao' passwd
i 前插
sed -i '1 i nihao' passwd
c 替换 sed '/zhong/c abc' 将zhong这一行替换成abc
sed -i '1 c no' passwd