linux sed-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

linux sed

简介: 原始文件的内容:代码如下:[root@localhost ~]# cat file.txthello worlda:b:c -h -na:b:c -h -n sed根据条件删除相关的行:代码如下:[root@localhost ~]# sed -i '/a:b:c -h -n/d' file.

原始文件的内容:
代码如下:
[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

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: