sed命令用法详解

1.sed运行原理

        sed(stream editor)是一个行处理器。处理时,把当前处理的行放到“模式空间中”,处理完毕后,把该行输出到屏幕,接着处理下一行;这样不断重复,直到末行;此时文件本身内容并没有改变

2.sed用途

        自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序

3.sed命令用法详解

    (1)sed [option].. 'script' file..

            常用选项 -n 静默模式,不输出模式空间内容

                           -r 支持扩展正则表达式

                            -e 多点编辑

                            -f 从指定文件读取编辑脚本

                            -i 原处编辑,改变文件本身内容

实例:a文件原本内容如下

1470794807750258.png

用sed使其显示第一行,并在第二行前插入‘this is a test’

2.png

    (2)script格式:

             位置界定编辑命令

            a.地址界定

                    A不给地址,对全文界定

                    B单地址:

                                    # :指定的行

                                    /pattern/:被模式匹配的没一行

                    C地址范围:

                                    #1,#2:从#1行到#2行

                                    #1,+#2:从#1行开始,往下再匹配#2行

                                    /pat1/,/pat2/:从第一次匹配到pat1的行到第一次匹配到pat2的行

                                    #,/pat/:从#行到第一次匹配到pat的行

                    D~:步进

                                  1~2:  奇数行

                                  2~2: 偶数行

          b.常见的编辑命令

                p 显示匹配到的行

                d删除匹配到的行

                i\text在匹配行的前边插入文本,加上\n,支持多行插入

                a\text在匹配行的下边追加文本,加上\n,支持多行追加

                c\text把匹配行换为单行或多行文本

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

                 !模式空间匹配行取反处理

                r file读取指定文件到匹配行的后边

                w file保存匹配行到指定文件

                

                s///查找替换,支持使用其它分隔符:s@@@ ,s###

                替换标记:

                        g;行内全局替换

                        p:显示替换成功的行

                        w /path/to/somefile:就替换成功的行保存到文件中

实例一:在a文件第二行后边追加两行文本

1470796599150684.png

1470796606757725.png

实例二:处理b文件,以/^1/到/^4/行不输出,然后把内容保存到/root/b文件下

4.png

5.png

            c.高级编辑命令

                    

                    d:删除当前空间模式的行

                    D:删除当前模式空间开端到\n的内容(不标准输出),但剩余标准空间继续执行sed

                    g:把保存空间内容覆盖到模式空间

                    G:把保存空间内容追加到模式空间

                    h:把模式空间内容覆盖到保存空间

                    H:把模式空间内容追加到保存空间

                    n:读取匹配到的行的下一行覆盖到模式空间

                    N:读取匹配到的行的下一行追加到模式空间

                    x:模式空间和保存空间内容互换

实例解析:本实验还是以a文件为实验文件,a文件内容如下

        1470797740644619.png

 

        1.sed -n 'n;p' a:显示的是偶数行

6.png

分析:‘-n’静默模式,默认不输出;‘n;p’里的n的作用是把匹配到的行的下一行覆盖到模式空间,p是输出到屏幕;当把第一行内容匹配进模式空间时,第二行会把第一行覆盖掉,结果显示的是第二行,然后处理第三行,显示第四行内容,依次类推,直到行末。

        2.sed '$!N;$!D' a  只读取最后两行

             7.png

分析:‘$!N’意思是当不是最后一行时,读取匹配到的行的下一行追加到模式空间;

            ‘$!D’意思为当不是最后一行时,删除当前模式空间内容开始到/n结束,其余继续接受sed处理

课后作业

1,删除/etc/grub.conf中所有以空白开头的行行首全部空白字符

     z1.png

2.删除/etc/fstab中以#开头,且后边至少跟一个空白字符的行的行首的#和空白字符

z2.png

3.在/root/install.log每行行首添加#

组.png

4.在/etc/fstab中不以#开头的行行首加上#

中.png

5.处理/etc/fstab,分别取出其目录名与基名

值.png

6.用sed取出本机ipv4

6.png

7.统计centos安装光盘里Package目录下所有rpm文件以.分割的倒数第二个字段重复次数

(1)先查看光盘挂载在哪里

2.png

(2)4.png

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

赞 (1)
mengzhiqianmengzhiqian
上一篇 2016-08-15 09:25
下一篇 2016-08-15 09:25

相关推荐

  • Linux bash中命令执行状态返回值

    Linux bash中命令执行状态返回值 在操作系统中,命令的执行后输出的内容为命令执行结果输出,而这个命令本身是否执行成功,它是通过命令执行状态返回值来标识的。 常用的值: 0 表示命令执行成功非0 表示命令执行失败 bash中获取命令执行状态返回值的方法 在刚执行完一条指令后,使用echo $?取得上一条指令的命令执行状态返回值,示例如下:  …

    Linux干货 2016-11-06
  • Sed简介

    Sed简介    一、简介   sed全称是:Stream EDitor。sed命令的功能同awk类似,差别在于,sed简单,对列处理的功能要差一些,awk的功能复杂,对列处理的功能比较强大。  sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern s…

    Linux干货 2015-05-11
  • 部署LAMP之WordPress, PMA(https), Discuz

    一、环境介绍     系统:CentOS 6.7     软件:httpd-2.2, mysql-5.3, wordpress-4.3, pma4.0     网络:       …

    Linux干货 2016-03-24
  • 在CentOS中获取命令帮助

    在CentOS中获取命令帮助    在使用和学习CentOS系统中,当我们遇上不熟悉的命令却又需要了解它的详细用法的时候,我们需要获取帮助。除了借助他人和搜索引擎之外,自己通过查看系统帮助文档来解决问题是很重要的。下面就来介绍如何获取帮助以及简单的解决思路:    一、如何获取命令帮助 Linux提供多层次的命令帮助:…

    Linux干货 2016-07-27
  • linux权限管理

    linux文件权限    文件的属性和权限的设置对于linux系统来说是相当重要的,如果对这一块的知识没有一个深入的了解,你的系统就有可能有很大的危险。那么首先我们来看一看文件的属性所对应的都是什么意思吧。 上图第一个字符是d,他代表了文件的类型,d的意思就是目录文件,那么除了目录文件还有什么文件呢?    …

    Linux干货 2016-08-04
  • 18-系统启动故障修复-实践

    说明:重启时可以选择性在vmlinuz所在行末尾添加 selinux=0;或者直接编辑/etc/selinus/config文件,更改 SELINUX=disabled 关闭SELINUX。可以避免打标签,节省启动时间 以下操作都需要进入bootloader引导加载项修改内核启动参数,在vmlinuz所在行末尾添加一个启动选项 如何进入bootloader引…

    2017-04-02