Linux三剑客中的第二剑――Sed(文本编辑器)

   文本处理三剑客:

   第一剑:grep、egrep、fgrep 文本搜索工具

   第二剑:sed 全称Strema Editor,一种强大的文本编辑器    

   第三剑:Awk 文本格式化工具,文本报告生成器

   本文主要描述第二剑:sed 文本编辑器

   Sed是对文件内容进行逐行处理,一行一行的进行。它处理的并不是原数据,而是将目标文件复制以后在处理。

              

   Sed用法:sed  [OPTION]... {script-only-if-no-other-script} [input-file]...

   script:来指明对文本进行什么样的操作(地址定界+编辑命令)

     

   Sed常用选项:

    -n:不输出模式空间中的内容到屏幕上(模式空间:sed工作的地方,对文本进行处理、加工)

    (如果配合d命令,则不会显示任何内容。如果配合p命令,则只显示匹配到的内容) 

    -e:在一个sed中可以编辑多个脚本(运行多个命令)

    -f:每行编辑一个命令/PATH/TO/SED_SCRIPT_FILE

    -r:支持使用扩展正则表达式

    -i:直接编辑原文件

  

    地址定界:

     (1)空地址(不指明文本中的某一行):对全文进行处理

     (2)单地址(指定一个数字):   

          #:明确文本中的第几行

         /PATTERN/:显示每一行中有此模式的行

     (3)地址范围(起始,结束):中间用逗号隔开

          #,#:从第几行到第几行

          #,+#:显示从#行开始,在显示+#行。

          例如:“3,+8”  意思是从第三行开始,再往下显示八行(总共显示了9行)

          #,/part/:显示从指定的#行开始直到第一次被模式所匹配到的之间的行

         /partten1/,/partten2/:显示第一次被模式匹配和第二次被模式匹配之间的行

     (4)步进:

          1~2:显示所有的奇数行

        2~2:显示所有的偶数行


     编辑命令:

        d:删除指定的行

         例:把wxpp文件中的第2-5行删除掉

          Linux三剑客中的第二剑――Sed(文本编辑器)_第1张图片

        p:指定的行显示2次

         例:把wxpp文件中奇数行显示2次

           Linux三剑客中的第二剑――Sed(文本编辑器)_第2张图片

        a: 在匹配到的下方追加文本(模式:\text);多行追加(\text\ntext)

          例:在wxpp文件中的第三行追加2行“wtc xi huan wxpp”“wxpp xi huan wtc”

            Linux三剑客中的第二剑――Sed(文本编辑器)_第3张图片

         如果想全文都追加“wtc xi huan wxpp”,把命令中的地址定界“3”删除掉即可,如下图  

           Linux三剑客中的第二剑――Sed(文本编辑器)_第4张图片  

        i:在匹配到的行上方插入本文(模式:\text)

         例:在wxpp文件中的第3行插入“wtc xi huan wxpp”

           

       

        c:把匹配到的行替换为指定的文本(模式:\text)(注意:整行替换)

          例:把wxpp文件中第2-5行换成“wxpp xi huan wtc”

            Linux三剑客中的第二剑――Sed(文本编辑器)_第5张图片

          注意:把2-5行换成“wxpp xi huan wtc”是把2-5行看成一个整体,替换为“wxpp xi huan wtc”

            

       w:把模式空间中的内容保存在指定的文件中

        例:把/etc/stab中以UUID的开头的行保存知道/tmp/wtc中

         

   


    r:把指定文件的内容加入到匹配模式行的后面(文件合并,把一个文件中的内容穿插到另一个文件中)

     例:把wtc中的内容穿插到wxpp中的第四行后面

         Linux三剑客中的第二剑――Sed(文本编辑器)_第6张图片


     =:把匹配到的行前面加上行数

      例:给fstab中以UUID开头的行注明是第几行

        Linux三剑客中的第二剑――Sed(文本编辑器)_第7张图片

   

     !:条件取反(写在模式后面)

      例:删除fstab下面以非#开头的行

       Linux三剑客中的第二剑――Sed(文本编辑器)_第8张图片



      s///:查找替换。其分隔符可以自行制定,常用的有s@@@、s###等。

      例:删除fstab文件中以#号开头的行。(把#号替换成什么都没有)

       Linux三剑客中的第二剑――Sed(文本编辑器)_第9张图片

        

    

    

你可能感兴趣的:(linux,编辑器,三剑客)