他的工作方式就是先从输入读取到的东西放入模式缓冲区,然后在对模式缓冲区进行操作。
参数选项:
-e : 在命令行模式上进行sed的操作
-n : 取消默认输出
-f:sed动作写在一个文件内。然后-f就是启动这个脚本
-I : 修改读取的内容,而不是打印到控制台。
操作选项:
a: 新增,在当前行的下一行
c: 替换
s:替换
d: 删除
i:增加 ,在当前行的上一行
p: 打印
常见的例子:
删除:
删除某一行,5表示行数,d表示删除
sed -e '5d' /tmp/passwd.bak
范围删除,比如删除1-4行这个区间
sed -e '1,4d' /tmp/passwd.bak
删除最后一行:
sed -e '$d' /tmp/passwd.bak
删除空白行:
sed -e '/^$/d' /tmp/passwd.bak
显示:
显示第一行:
sed -n '1p' /tmp/passwd.bak
显示第m到第n行:
sed -n '1,3p' /tmp/passwd.bak
显示最后一行:
sed -n '$p' /tmp/passwd.bak
新增:
在某一行之后增加
sed '$a Nicky Test The Stream Editor\nThis the second line' /tmp/passwd.bak
在某几行之后增加
sed '2,4a Nicky Test The Stream Editor' /tmp/passwd.bak
在某一行之前增加:
sed '$i Nicky Test The Stream Editor' /tmp/passwd.bak
替换操作:
某一行替换成什么
#最后一行替换成ReplaceLine
sed '$c ReplaceLine ' /tmp/passwd.bak
#第m行到第n行替换成
sed '4,$c ReplaceLine ' /tmp/passwd.bak
***********************************************************
如果只是替换行中某一部分而言,需使用s命令
这里涉及到sed的规则表达式,s///
#把文件中root替换成nickyzhang,s表示替换,g表示全局,如果不指定是否全局,默认就替换第一个找到的
sed 's/root/nickyzhang/g' /tmp/passwd.bak