Linux_Stream Editor

sed 是一个文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除查看以及增加。

他的工作方式就是先从输入读取到的东西放入模式缓冲区,然后在对模式缓冲区进行操作。

 

参数选项:

-e : 在命令行模式上进行sed的操作

-n : 取消默认输出

-fsed动作写在一个文件内。然后-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

 

猜你喜欢

转载自nicky19870612.iteye.com/blog/1999108