sed命令的入门与进阶

sed:Stream EDitor

    什么是sed呢?sed被称为linux文本处理三剑客之一,另外两个就是大名鼎鼎的grep和awk。sed是非交互性的流编辑器,在处理文本时一次只读取一行文本,然后基于所给定的编辑脚本对模式空间中的内容做编辑处理并把处理后的结果输出至标准输出。接着处理下一行文本,这样不断重复,直到文件的末尾。sed命令默认不会对原文件做修改,因此你可以使劲的造,而不必担心有什么可怕的后果。

   下面来说说sed命令的用法:

     格式:sed [option]… ‘script’ inputfile…

用法:

    sed [option] ‘addr1,[addr2]编辑命令’ inputfile…

    sed [option] “addr,[addr2]编辑命令” inputfile…

        例:sed -n ‘2d’ /etc/issue

    
          -n:静默模式,不输出模式空间中的内容至标准输出
          -e ‘script’ [-e ‘script’]: 指定多个编辑指令
                    # sed -e ‘/^$/d’ -e ‘s@^#@@’ /etc/fstab
          -f:/PATH/SCRIPT_FILE: 从指定文件中读取编辑脚本
                    # sed -f sed.script /etc/fstab
                        将一组命令写入脚本文件中。
                            例:/^$/d/
                                s@^#@@
          -r:使用扩展正则表达式    
          -i:原处编辑(直接修改原文件,你懂的)
      
     地址定界:
             1.不给地址:对全文进行处理
              2.单地址:
                         #:指定行;
                         /pattern/:被此处模式所能够匹配到的每一行;     
              3.地址范围:
                         x,y:表示从x行到y行
                         #,+#:表示从#行到+#行,例:3,+3:表示从第3行到第6行
                         /pat1/,/pat2/:从/pat1/所匹配到的行到/pat2/所匹配到的之间所有的行
                         #,/pat1/:从#行开始,到第一次被/pat1/所匹配到的行结束之间所有的行
              4.~:步进
                        1~2p:显示奇数行
                         例:sed ‘1~2p’ /etc/issue
                        2~2p:显示偶数行
                         例:sed ‘2~2p’ /etc/issue
编辑命令

d:删除模式空间中匹配到的行

例:sed ‘/^UUID/d’ /etc/fstab

p:显示模式空间中的内容(不配合-n选项,默认会显示两遍)

例:sed -n ‘/^UUID/p’ /etc/fstab

a  \text:在匹配到的行后面添加文本;

例:sed ‘/^UUID/a Test line’ /etc/fstab

例:sed ‘/^UUID/a Test line \nsecond line’ /etc/fstab(配合\n可实现多行追加)

i  \text:在匹配到的行前面添加文本;支持使用\n实现多行插入    

例:sed ‘/^UUID/i Test line’ /etc/fstab    

c \text:替换匹配的行为单行或多行文本

例:sed ‘^/UUID/c uuid’ /etc/fstab

w /PATH/TO/FILE:保存模式空间中的内容至指定文件中

例:sed ‘^/UUID/w /tmp/fstab.txt’ /etc/fstab

r /PATH/FORM/FILE:   读取指定文件的内容至模式空间中所匹配到的行后面 

例:sed ‘7r /etc/passwd’ /etc/fstab

=:为模式空间中的行打印行号

例:sed ‘/^\//=’ /etc/fstab

!:对地址定界取反

例:sed ‘/^UUID/!d’ /etc/fstab

s/查找条件/替换为的内容/:支持使用其它分隔符,s@@@,s###
                   替换标记:
                             g:global,行内全局替换
                             i:忽略字符大小写 
                             p:显示替换成功的行
                             w /PATH/TO/FILE:将替换成功的结果保存至指定文件中
                  例:sed ‘s#^UUID#uuid#’ /etc/fstab

                            同时也支持后向引用

                                   例:sed -n ‘s#r..t#&er#p’ /etc/passwd 

高级编辑命令:
     h(hold):把模式空间中的内容覆盖至保持空间中
     H :把模式空间中的内容追加至保持空间中
     g(get):从保持空间取出内容覆盖至模式空间
     G:从保持空间取出内容追加至模式空间
     x:把模式空间中的内容与保持空间中的内容进行互换
     n:读取匹配到的行的下一行覆盖至模式空间
     N: 读取匹配到的的行下一行追加至模式空间
     d:删除模式空间的行
     D:删除多行模式空间中的所有行
     例:

          sed -n ‘n;p’ FILE:显示偶数行

           sed命令的入门与进阶    

          sed ‘n;d’ FILE:显示奇数行

          sed命令的入门与进阶

          sed ‘1!G;h;$!d’ FILE:逆序显示文件内容

          sed命令的入门与进阶

          sed -n ‘1!G;h;$p’ FILE:逆序显示文件内容(和上面的命令是同样的结果)

           sed命令的入门与进阶

          sed ‘$!N;$!D’ FILE:取文件最后两行

          sed命令的入门与进阶

sed ‘$!d’ FILE:取出最后一行

sed命令的入门与进阶

          sed ‘G’    FILE:在行后面增加空白行

          sed命令的入门与进阶

          sed ‘/^$/d;G’ FILE : 把多个空白行合并为一个空白行,并在每一行追加一个空白行

          sed命令的入门与进阶

               
         

原创文章,作者:人字拖,如若转载,请注明出处:http://www.178linux.com/71180

(0)
人字拖人字拖
上一篇 2017-03-16
下一篇 2017-03-16

相关推荐

  • 实现真实的机柜模拟图[原创]

    一般能反映机房设备位置、结构我们都喜欢通过网络拓扑图来展现,但个人感觉还不够直观、明了的表现出自己想要的结果(自己太挑剔了,呵呵)。因此写一个生成真实机柜模拟图平台,实现与真实服务器外观、服务状态、空闲位置等信息。在线效果图http://blog.liuts.com/idc/系统截图1、平台显示某一排截图2、平台显示某台服务器详细信息截图3、状态说明2U服务…

    Linux干货 2015-03-27
  • 五大主流数据库模型

    导读:无论是关系型数据库还是非关系型数据库,都是某种数据模型的实现。本文将为大家简要介绍5种常见的数据模型,让我们来追本溯源,窥探现在流行的数据库解决方案背后的神秘世界。 什么是数据模型? 访问数据库中的数据取决于数据库实现的数据模型。数据模型会影响客户端通过API对数据的操作。不同的数据模型可能会提供或多或少的功能。一般而言,数据模型不会直接提供过多的功能…

    Linux干货 2015-04-04
  • 【超全整理】《Linux云计算从入门到精通》系列实战笔记全放送

          为了方便Linux云计算爱好者的学习查看,马哥Linx云计算团队特别整理了《Linux云计算从入门到精通》年度重磅大放送,囊括了整个学习过程的学习精华,内容全部由马哥Linux云计算学员撰写,欢迎大家支持!!!       详情请看:  一、Linux运维基础实战入门 从Linux0基础入门开始,全面讲解作为新手如何学习Linux,以及学习方法和…

    2017-09-14
  • 文本查看工具、grep及正则表达式

    cat [OPTION]… [FILE]…顺序查看文件-E: 显示行结束符$-n: 对显示出的每一行进行编号(包括空白行)-A:显示所有控制符-T:显示制表符^I(即tab键)-b:只对非空白行进行编号-s:压缩连续的空行成一行 tac 逆序查看文件(第一行变为最后一行) rev 行内逆序查看文件(第一个字符变为最后一个字符) mor…

    Linux干货 2016-08-11
  • grep命令v2

    显示netstat 以LISTEN结尾,或后接空白的行

    Linux干货 2016-11-20
  • shell脚本1——test测试

    程序:指令+数据 程序:算法+数据结构 shell脚本编程: 编程的语言分类:根据运行方式     编译运行:源代码——>编译器——>程序文件     解释运行:源代码——>运行时启动解释器,由解释器边解释边执行 根据其编程过程中功能的实现是否调用库还是调用外部…

    Linux干货 2016-08-18

评论列表(1条)

  • 马哥教育
    马哥教育 2017-03-20 09:47

    尽量不要复制粘贴笔记