zoukankan      html  css  js  c++  java
  • Sed 用法

    sed

      常用选项

        -n:不输出模式空间中的内容至屏幕

        -e:多点编辑(可以多个命令进行)

        -f:每行一个编辑命令

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

        -i:直接编辑原文件

      地址定界

        1、空地址:对全文进行处理

        2、单地址:

          #:指定行

          /pattern/:被此模式所匹配到的每一行

        3、地址范围

          #,#:

          #,+#:

          #,/pat1/

          /pat1/,/pat2/

        4、步进:~

          1~2:所有的奇数行

          2~2:所有偶数行

      编辑命令:

        d:删除

        p:显示模式空间中的内容

        a ext:在行后面追加文本,支持使用 实现多行追加

        i ext:在行前面插入文本,支持使用 实现多行插入

        c ext:把匹配到的行替换为此处指定的文本

        w /PATH/TO/SOMEFILE:保存模式空间匹配到的行至指定的文件中

        r /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并

        =:为模式匹配到的行打印行号(sed '/^UUID/=' /etc/fstab)

        !:条件取反(sed '/^#/!d' /etc/fstab)

        s///:查找替换,分隔符可自行指定

          替换标记:

            g:全局替换

            w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中

            p:显示替换成功的行

    练习1:删除/boot/grub2/grub.cfg文件中所有以空白字符开头的行的行首的所有空白字符

      sed 's/^[[:space:]]+//g' /boot/grub2/grub.cfg

    练习2:删除/etc/fstab文件中所有以#开头的行的行首的#号及#后面的所有空白字符

      sed 's/^#[[:space:]]*//g' /etc/fstab

    练习3:输出一个绝对路径给sed命令,取出其目录,其行为类似于dirname

      echo "/var/log/messages" | sed 's/[^/]+$//'

  • 相关阅读:
    windows10使用记录
    DevOps理论与实践总结
    工资调整
    Node程序debug小记
    基于游标的分页接口实现
    util.promisify 的那些事儿
    如何编写 Typescript 声明文件
    async语法升级踩坑小记
    使用TS+Sequelize实现更简洁的CRUD
    使用 TypeScript 改造构建工具及测试用例
  • 原文地址:https://www.cnblogs.com/P-Z-W/p/11075022.html
Copyright © 2011-2022 走看看