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

Linux系统管理-(18)--sed命令

时间:2015-09-25 14:41:52      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:sed

sed

    sed: Stream EDitor,行编辑器

            格式 :
                  sed [option] ‘[地址][编辑命令]‘

        常用选项:
                -n,--quiet:不输出模式中的内容到屏幕
                -e:     多点编辑
                -f:     /path/to/script_file :从指定文件中读取脚本
                -r:支持扩展的正则表达式
                -i:修改源文件

        地制定界:
                (1)不给地址:对全文进行处理;
                (2)单地址:
                        #: 指定的行
                        /pattern/: 模式匹配的所有行
                (3)地址范围:
                        #,#   确定行到确定行
                        #,+#  从左侧#表示的行起始,加上右侧#表示的行数;
                        $: 最后一行
                        /pat1/,/pat2/ 模式行到模式行 (第一次匹配)
                        #,/pat1/ 确定行到第一次匹配模式
                (4)~:步进
                        例如 1~2 2~2  

        编辑命令:
                ##模式空间就是匹配到的行
                d:删除符合行
                p:打印符合行  (d 与 -n ‘ p‘相反效果)
                a \text  :在行后边追加文本,支持使用\n实现多行追加
                i \text  :在行前边插入文本:支持使用\n实现多行插入
                c \text  :替换行为单行或多行(\n)文本
                w  /path/to/somefile: 保存模式空间中的内容保存到指定文件中
                r /path/from/somefile :读取指定文件的文本流至匹配模式中
                =    :为模式空间中的行打印行号;
                !  :取反条件(针对地址范围)
                s /// :替换,支持使用其他分隔符号,s@@@,s###
                    s/要查找的内容/替换为的内容/修饰符
                    
                    修饰符:
                        p: 显示替换成功的行
                        g: 全局替换;默认情况下,每一行只替换第一次
                        &:后向引用
                        w : /path/to/somefile 将替换成功的结果保存至指定文件中

                练习1:删除/boot/grub/grub.conf文件中所有以空白开头的行行首的空白字符;
                        ~]# sed ‘s@^[[:space:]]\+@@‘ /etc/grub2.cfg

                    练习2:删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符;
                        ~]# sed ‘s@^#[[:space:]]\+@@‘ /etc/fstab

                    练习3:echo一个绝对路径给sed命令,取出其基名;取出其目录名;
                        ~]# echo "/etc/sysconfig/" | sed ‘s@[^/]\+/\?$@@‘


        高级编辑命令:    
                    h:把模式空间中的内容覆盖至保持空间中
                    H:把模式空间中的内容追加到保持空间中
                    g:从保持空间取出数据覆盖模式空间
                    G:从保持空间取出数据追加模式空间
                    x: 模式空间与保持空间内容互换
                    n:读取匹配到的行的下一行覆盖到模式空间  文件中的游标也会随之移动
                    N:读取匹配到的行的下一行追加至模式空间  文件中的游标也会随之移动
                           ##如,n读第一行后马上自动读第二行进行处理,处理完毕游标移动至第三行,

                    d:删除模式空间中的行
                    D:删除多行模式空间中的所有行

Linux系统管理-(18)--sed命令

标签:sed

原文地址:http://openex.blog.51cto.com/6280069/1698148

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