在脚本中实现无交互编辑文本
sed [选项] ‘[动作指令]’ filename
-n 屏蔽默认输出
-e 执行多个sed命令
-i 直接修改文本内容
-i.bak 直接修改文本内容的同时,对原文件进行备份
-r 使用扩展正则表达式
a 添加行,在指定行的下方添加内容
i 添加行,在指定行的上方添加内容
p 打印,配合-n 使用
d 删除行
s 替换字符串
c 替换行
r 读取文件,插入至指定位置
w 另存为
搜索条件要使用“/…/”括起来
[root@haha ~]# cat test.txt
haha
heihei
hehe
xixi
hengheng
[root@haha ~]# sed '/haha/p' test.txt
haha
haha
heihei
hehe
xixi
hengheng
[root@haha ~]# sed -n '/haha/p' test.txt
haha
sed ‘s/要被替换的字串/新的字串/g’
s "替换"命令
/…/…/ 分割符 (Delimiter)
分割符 “/” 可以用别的符号代替 , 比如 ","或 "|“或”@"等
sed 's/\/usr\/local\/bin/\/usr\/bin/'
等价于 sed 's@/usr/local/bin@/usr/bin@'
sed ‘s/old/new/’ 只替换每行的第一个old
sed ‘s/old/new/2’ 只替换每行的第二个old
sed ‘s/old/new/g’ 全局替换
sed ‘3s/old/new/’ 只替换第三行的第一个old
sed ‘1,3s/old/new/’ 只替换第一行到第三行的第一
个old
sed ‘1,$s/old/new/’ 只替换第一行到最后一行的第
一个old
sed ‘s/old/new/g;s/old1/new1/g’ 替换所有的old
为new,替换所有的old1为new1
sed ‘d’test.txt ##删除全部
sed ‘3d’ test.txt ##指定行号删除
sed ‘1,3d’ test.txt ##删除指定区间行
sed ‘3,$d’ test.txt ##删除第三行开始的所有
内容
sed ‘/heng/d’ test.txt ##删除指定的内容
sed 不会真的取删除源文件内容,这里的删除只是输出
不显示而已,源文件没有发生改变
-e 选项
sed -e ‘s/xixi//’ -e ‘s/heng/ha/g’ test.txt
sed ‘s/xixi//;s/heng/ha/g’ test.txt
i插入 ,a附加
a(i)\文本内容
sed ‘3i \insert’ test.txt ##在第三行前插
入insert
sed ‘3a \append’ test.txt ##在第三行后附
加append
sed ‘$a \file end’ test.txt ##在文件末尾附
加file end
sed ‘2,4a \append’ test.txt ##在2,3,4行
后分别附加append
sed ‘3i \haha\n\hehe\n\heihei’ test.txt
##添加多行数据,每行末尾使用\n换行符
sed '2i\hello \
> world \
> haha' test.txt ##如果想追加或插
入多行数据,则除最后一行外,每行的末尾都要加
入"\"代表数据未完结
c\用于替换的新文本
sed '2,$c\hello world' test.txt ##将第二行开
始到结束的所有行替换为hello world
sed '2c\hello world' test.txt ##将第二行
换成hello world
sed ‘/haha/c/haheihahei’ test.txt ##将文件
中以包含haha的行替换为指定内容
sed ‘/selinux=enforcing/c/selinux=disabled’
/etc/selinux/config
##将/etc/selinux/config里的selinux=enforcing
的行替换为/selinux=disabled