原始文件的内容:
代码如下:
[root@localhost ~]# cat file.txt
hello world
a:b:c -h -n
a:b:c -h -n
sed根据条件删除相关的行:
代码如下:
[root@localhost ~]# sed -i '/a:b:c -h -n/d' file.txt
[root@localhost ~]# cat file.txt
hello world
sed根据条件进行相关内容的替换:
代码如下:
[root@localhost ~]# sed -i 's/hello/baidu/' file.sh
[root@localhost ~]# cat file.sh
baidu world
http://www.jb51.net/article/34425.htm
二、sed简介
sed:是一个编辑器,是一个强大的文件处理工具。
sed作用:用来替换、删除,更新文件中的内容。sed能自动处理一个或多个文件。
sed原理:sed以文本的行为单位进行处理,一次处理一行内容。首先sed把当前处理的行存储在临时缓冲区中(称为模式空间pattern space),接着处理缓冲区中的行,处理完成后,把缓冲区的内容送往屏幕。sed处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示,这样不断的重复,直到文件末尾。处理完文件的最后一行后,sed便结束运行。
因为sed是对文件中每行在临时缓冲区中的副本进行编辑,所以原文件内容并没有改变,除非重定向输出。
三、sed命令介绍
#sed [-nefri][命令]
参数说明:
-i:直接修改文件,终端不输出结果。
-n:使用安静(slient)模式,取消默认输出。sed默认会将所有来自stdin的数据输出到终端上。但如果加上-n参数后,不自动打印处理后的结果,只是默默的处理,只有经过sed特殊处理的那一行才被列出来。
-e: --expression直接在命令模式上进行sed的动作编辑。sed -e '...' -e '...' -e '...'
-f:指定sed脚本的文件名。
-r:sed动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
命令说明:[n1][n2]命令
n1,n2:表示行号,该参数可选,一般表示希望操作的行数,可以是数字,正则表达式或二者混合。
用逗号分隔的两个行数表示这两行为起止的行的范围。如1,3表示1,2,3行,美元符号($)表示最后一行。如何没有指定地址,sed将处理输入文件的所有行。地址通常的写法有:n;n,m;n,$。举例,如果我的操作是需要在3到5行之间进行的,则【3,5,[动作行为]】。
命令:
a:新增,在当前行的下一行追加一行文本。
i:插入,在当前行的上一行插入一行文本。
c:替换,以行为单位进行替换,c的后面可以跟字符串,用这些字符串取代n1,n2之间的行。
d:删除,从模式空间删除一行。
p:打印,打印模式空间的行。通常p会与参数【-n】一起使用。
s:替换,通常s命令可以搭配正则表达式!例如1,20s/old/new/g。
http://www.cnblogs.com/starof/p/4181985.html