码迷,mamicode.com
首页 > 其他好文 > 详细

9月15日 sed

时间:2015-09-21 01:44:38      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:stream   编辑器   表达式   空间   

sed:stream editor:流编辑器

是一种文本编辑器:

一次读一行,读到自己专用的“模式空间(pattern space)”中

在模式空间中对文本进行处理,

如果符合模式,则执行编辑操作,否则不执行操作。无论处理与否,都输出到屏幕

支持正则表达式

     -r支持扩展正则

     -n静默模式:不输出,只编辑

     -e script1 –e script2 –e script3多点编辑

     -f 从配置文件中读取脚本,然后按脚本执行

     -i 直接修改源文件;默认是不修改源文件的

 

地指定界:

     #:指定行

     $:最后一行

     /regexp/:能够被regexp所匹配的行

     \%regexp%:同上

技术分享

        /regexp/| \%regexp%忽略字符大小写

开始行,结束行

     #, /regexp/:从#开始,披到到/regexp/结束

     #,#1:#开始,#1结束

     /regexp1/,/regexp2/,从匹配1开始到匹配2结束

     #,+n:#开始,匹配之后的n行

     first~step:first开始,step步进

 

 

d:删除 sed ‘1,4d’删除

技术分享 

=显示行号

技术分享

a:追加行 append

技术分享 

i:插入 insert

技术分享 

c:替换change

技术分享

p:打印模式空间中的行

技术分享

s/regexp/replace/用后面替换前面,可以使用后向引用

          g:全局替换

           i:不区分大小写

技术分享

w:另存到其他文件

技术分享

技术分享

r:插入另一个文件,完成文件合并

练习:

1、删除/boot/grub/grub.conf文件中所有行首的空白字符

我在centos7上没找到这个文件,找到了/boot/grub2/grub.cfg,删除了里面的行首#

技术分享 

2、删除/etc/fstab文件中所有#开头,后至少跟一个空白字符的行的行首的#和空白字符

技术分享

3、把/etc/fstab文件的奇数行另存为/tmp/fstab.3

技术分享

4、echo一个文件路径给sed命令,取出其基名,进一步取出其路径名

还没想出来

保持空间,hold space

保存模式空间中的内容

h:用模式空间内容覆盖保持空间内容

H:用模式空间内容追加保持空间内容

g:从保持空间中取1行内容覆盖到模式空间

G:从保持空间取呢容追加模式空间

x:交换内容

n:读取匹配行下一行,覆盖保持空间

N:读取匹配行,追加保持空间

d:删除模式空间的内容

D:删除多行模式空间中的首行

以上内容都可以!取反

技术分享

 

sed ‘G’ /etc/fstab,在每一行后面添加空白行

技术分享 

sed ‘$!d’ /etc/fstab 保留最后一行

技术分享

sed ‘/^$/d;G’ /etc/issue,保证指定文件的每一行后面有且只有一个空白行

技术分享 

sed ‘n!d’ /etc/issue,保留奇数行

技术分享

sed –n ‘1!G;h;$p’ /etc/issue 倒序!

9月15日 sed

标签:stream   编辑器   表达式   空间   

原文地址:http://korekara.blog.51cto.com/8206017/1696594

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!