码迷,mamicode.com
首页 > 系统相关 > 详细

linux-sed的基本用法

时间:2015-12-22 19:39:30      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:sed的基本用法

        最近一段时间再自学Linux,其实很想去培训结构但是迫于无奈,只好自学;将学的一些知识分享一下,欢迎大家吐糟。下面分享的是 sed的基本用法

一、sed命令行格式:

      sed [-ndfri] ‘command‘ 输出文本/文本

 

二、常规选项:

      -n:静默模式,不再默认显示模式空间里面的内容,只有sed特殊处理的那一行才会被列出来

      -i:直接修改源文件,而不是显示在屏幕上

      -f:指明sed脚本的文件名,直接将sed的动作卸载一个档案内,-f filename 则可以执行filenamesed 

      作

      -r:使用扩展正则表达式,默认是基础正则表达式

 

三、常规命令:

       a:新增行,在指定的行后面追加新行(后一行)

       c:取代,c的后面可以接字符串,这些字符串可以取代n1,n2之间的行

       d:删除,删除符合条件的行,所以d后面不接任何内容

       i:在指定的行前面添加新行(前一行)

       p:打印,显示出符合条件的行在屏幕上

       s:取代,可以直接进行替换的工作,通常情况下s和正则表达式一起使用,such 1,20s/old/new/g

             格式:sed ‘s/要替换的字符串/新的字符串/g‘ (要替换的字符串可以用正则表达式)

 

四、定址

       定址决定对那些行进行编辑。地址的形式可以是数字、正则表达式、或二者的结合。如果没有地址,sed

    将处理输入文件的所有行。

       1、开始行,结束行;例如:1100

       2/RegExp/    例如:/^bash/

       3/pattern1//pattern2/(pattern:模式),第一次被pattern1匹配到的行开始,至第一次被

              pattern2匹配到的行结束,这中间的所有行

       4LineNumber(行号):指定的行

       5StarLine,+N  startLine开始,向后N

五、实例

        1、删除某行

               sed ‘2,5d‘ datafile

       删除第二到第五行

               sed  ‘MY‘,‘YOU‘ datafile

               删除MY行到YOU行之间的内容

               sed ‘MY,10d‘ datafile

       删除包含“MY”的行到第十行的内容

                sed ‘2,$d‘ datafile

       删除第二行到最后一行

 

       2、显示某行

              sed -n ‘1p‘ datafile

       显示第一行

              sed -n ‘$p‘ datafile

       显示最后一行

               sed -n ‘1,4p‘ datafile

       显示第一到第四行

 

       3、模糊查询

                sed -n ‘/hello/p‘  datafile

                查询包括关键字hello所在所有行

                sed -n‘/\$/p‘ datafile

                查询包括关键字¥所在所有行,使用反斜线\屏蔽元字符

 

       4、追加行

                 sed ‘1,3a leozhong‘ file

                  第一行到第三行后增加字符“leozhong

                 sed  ‘1aleozhong\n zhongqijian‘ file

                 第一行后增加多行,使用换行符\n

                 sed ‘/^\//a\#hello wold‘ leo(leo为当前目录)

                  \后面添加新行

                 sed ‘/^\//a\#leoqijian‘ qq当前目录)

                 \后面添加新行                

                  sed ‘2r /etc/passwd‘ leo

        将 /etc/passwd里面的内容追加到leo文件的第二行后面

        sed ‘$r/etc/passwd‘ leo

                 /etc/passwd里面的内容追加到leo文件的最后一行

 

       5、替换行

                sed ‘1c leo‘ leo文件leo中,用leo取代第一行的内容

                sed ‘s/^\//#/g‘leoleo文件中用#取代\

       sed  ‘s@/@#@#g‘ leo  同上还可以上使用其他字符   &除外  -g全局替换

      

       6、向后引用

                sed  ‘s#l..e#@r#g‘ leo  替换

 

       sed  ‘s#\(l..e)#\1r#g‘ leo向后引用

 

        7、删除字符(巧用替换)

                 sed ‘s#[[:space:]]##g‘ leo  删除leo文件中的空白字符

                 sed ‘s#[^[:space:]]*##g‘ leo  删除leo行首的空白字符

            


linux-sed的基本用法

标签:sed的基本用法

原文地址:http://zhongqijian.blog.51cto.com/4662673/1727251

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