资讯专栏INFORMATION COLUMN

sed的基本用法

FingerLiu / 1200人阅读

摘要:的工作流程,流编辑器,默认对原文件不做任何处理,仅对模式空间的数据进行处理,处理结束后,将模式空间打印至屏幕。

sed的工作流程
sed: Stream Editor,流编辑器,默认对原文件不做任何处理,仅对模式空间的数据进行处理,处理结束后,将模式空间打印至屏幕。sed逐行将文件读取到模式空间(内存),进行模式匹配,如果符合模式进行编辑(取决给的编辑命令),之后进行下一行的操作
sed命令格式
sed [options] "AddressCommand" file ...
    -n: 静默模式,不再默认显示模式空间的内容
    -i: 直接修改原文件
    -e SCRIPT -e SCRIPT: 可以同时执行多个脚本
    -f /PATH/TO/SED_SCRIPT
        sed -f /path/to/script file  将脚本中的每条命令执行于file文件
    -r: 表示使用扩展正则表达式
Address:
1、StratLine,EndLine
    比如1,100(第1行到第100行)
    $: 表示最后一行
2、/RegExp(正则表达式)/
    比如/^root/
3、/pattern1/,/pattern2/
    第一次被模式1匹配的行开始到第一次被模式2匹配的结束,这中间所有的行
4、LineNumber:
    指定某行
5、StarLine,+N
    从startline开始,向后的N行
Command:
    d: 删除符合条件的行
    p: 显示符合条件的行
    a string: 在指定的行后面追加新行,内容为string,
可以用于换行
    i string: 在指定的行前面添加新行,内容为string
    r FILE: 将指定的文件的内容添加到符合条件的行处
    w FILE: 将指定范围的内容另存至指定的文件中
    s/pattern/string/修饰符: 查找并替换,将pattern匹配到的内容替换成string(默认只替换每行中第一次被模式匹配到的字符串)
        加修饰符
            g: 全局替换
            i: 忽略字符大小写
    s///:s###:s@@@,也支持后向引用
        (), 1, 2
    &: 引用模式匹配整个串
        sed "s#l..e#&r#g" sed.txt
        sed "s#(l..e)#1r#g" sed.txt 
        sed "s#l(..e)#L1#g" sed.txt
        nano sed.txt
        hello, like
        hi, my love
        
    sed练习:
    1、删除/etc/grub.conf文件中行首的空白符;    
    2、替换/etc/inittab文件中"id:3:initdefault:"一行中的数字为5;    
    3、删除/etc/inittab文件中的空白行;    
    4、删除/etc/inittab文件中开头的#号;    
    5、删除某文件中开头的#号及后面的空白字符,但要求#号后面必须有空白字符;
    6、删除某文件中以空白字符后面跟#类的行中的开头的空白字符及#
    7、取出一个文件路径的目录名称
    基名
    
    
    1、sed -r "s@^[[:space:]]+@@g" /etc/grub.conf
    2、sed "s@(id:)[0-9](:initdefault:)@152@g"
    3、sed "/^$/d" /etc/inittab
    4、sed "s@^#@@g" /etc/inittab
    5、sed -r "s@^#[[:space:]]+@@g" /etc/inittab
    6、sed -r "s@^[[:space:]]+#@@g" /etc/inittab
       sed "s@^[[:space:]]{1,}#@@g" /etc/inittab
    7、echo "/etc/rc.d" | sed -r "s@^(/.*/)[^/]+/?@1@g"
       echo "/etc/rc.d" | sed -r "s@^/.*/([^/]+)/?@1@g"

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/33489.html

相关文章

  • Linux 常用命令用法:cat, find, xargs, tr, grep, cut, sed

    摘要:指定输出的分隔符使用,将作为文件名之间的分割符。这个命令的作用就是将的内容,作为其他命令的参数进行调用。比如结合命令命令的分隔符除了可能是之外,也可能是空格。在不指定文件名的情况下,接受作为输入源。比如上述命令应该修改为。 本文列明Linux的常用命令用法,学会了这些命令之后,结合shell编程知识,就可以做各种自动编译/集成的工作啦。本文地址:https://segmentfault...

    Yang_River 评论0 收藏0
  • Linux生产环境上,最常用一套“Sed“技巧

    摘要:替换模式以上是命令的常用匹配模式,但它还有一个强大的替换模式,意思就是查找替换其中的某些值,并输出结果。看两个命令的语法好玩由于正则的关系,很多字符需要转义。注意前半部分的范围是不能使用这种方式的。sed命令应用广泛,使用简单,是快速文本处理的利器。它其实没多少技巧,背诵、使用是最合适的学习渠道,属于硬技能。但它又很复杂,因为高级功能太多。本篇不去关注sed的高级功能,仅对常用的一些操作,进...

    Big_fat_cat 评论0 收藏0
  • Linux生产环境上,最常用一套“Sed“技巧

    摘要:命令应用广泛,使用简单,是快速文本处理的利器。范围表示找到文件中行的内容。最常用的,比如下面这个。常用的就是精确替换。表示将输出的每一行,执行一个命令。注意前半部分的范围是不能使用这种方式的。这是非常危险的。sed命令应用广泛,使用简单,是快速文本处理的利器。它其实没多少技巧,背诵、使用是最合适的学习渠道,属于硬技能。但它又很复杂,因为高级功能太多。本篇不去关注sed的高级功能,仅对常用的一...

    hlcfan 评论0 收藏0
  • 2016-04-11 Linux运维中常用命令分析

    摘要:看网上都有很多文章都写了常用命令,作为一个新手,可能用到的命令不多,那么这边就分两个部分总结,第一部分为自己平时常用的基本命令,第二部分为网上摘录的,觉得比较好的,可以作为自己扩展的一部分。注解为条件语句叹号表示反义不存在,代表目录。 看网上都有很多文章都写了常用命令,作为一个新手,可能用到的命令不多,那么这边就分两个部分总结,第一部分为自己平时常用的基本命令,第二部分为网上摘录的,觉...

    GraphQuery 评论0 收藏0
  • 2016-04-11 Linux运维中常用命令分析

    摘要:看网上都有很多文章都写了常用命令,作为一个新手,可能用到的命令不多,那么这边就分两个部分总结,第一部分为自己平时常用的基本命令,第二部分为网上摘录的,觉得比较好的,可以作为自己扩展的一部分。注解为条件语句叹号表示反义不存在,代表目录。 看网上都有很多文章都写了常用命令,作为一个新手,可能用到的命令不多,那么这边就分两个部分总结,第一部分为自己平时常用的基本命令,第二部分为网上摘录的,觉...

    KaltZK 评论0 收藏0

发表评论

0条评论

FingerLiu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<