zoukankan      html  css  js  c++  java
  • 三剑客之sed

    grep:适用于找文本内容

    sed:适用于大量修改。属于行编辑器。支持标准输入。是一行行的取到内存中处理。

    格式:sed  [参数]   ‘地址命令’   文件        (可以只有命令,但不能只有地址)

    一、参数

      -n    使默认输出不显示

      -i.后缀  真正的修改了文件。加后缀为了给原来的文件一个备份

      -r    支持扩展正则表达式

    二、地址

      ①、不给为空,默认为全文处理

      ②、单地址:

        #:指定的行。  $:最后一行

        /正则表达式/

      ③、范围地址:

        #,#:几到几行

        #,+#:从几到几行及以后的行

        /正则/,/正则/:从第一个正则开始,到第二个。若第二个未出现,则一直到结尾

        #,/正则/

      ④、步进:

        奇数行:1~2   从第一行开始,每次加2行

        偶数行:2~2 从第二行开始,每次加2行

    三、命令

      p  使结果显示

      d  将选中的行删除不显示,其他行显示(不是真的删除) sed   '1d;4d'  a.txt

      a []text  在后一行追加   (注:可多个添加)a  text  在下一行不顶头添加  a  text1    text2  连续加两行

      i  []text     在上一行追加

      c []text  将本行替换

      w /path/file  将找到的写入file中

      r  /path/file  将file内容写入匹配的行的下面

      =  显示匹配的行号

      !   取反(给地址,不算命令)

      s///(g)  例如:sed -nr 's/(r..t)/1er/gp' /data/passwd

               ifconfig |sed -n '2s/^.*inet//;s/ net.*//p'

               ifconfig |sed -n '2s/(.*inet)([0-9].*)( netmask.*)/2/p'

               sed -nr '^#!s/^/#/p'  文件名 

               echo /etc/sysconfig |sed -nr 's/(.*)/([^/]+)/?/2/p'

               echo /etc/sysconfig/ |sed -nr 's/(.*)/([^/]+)/?/1/p'

    注意sed中使用变量:①、“$n”

               ②、' '''$n''' '

    修改网卡名为:①、sed -ir '/^GRUB_CMDLINE_LINUX=/s/(.*)"$/1 net.ifnames=0"/' /etc/default/grub

           或 sed -ir '/^GRUB_CMDLINE_LINUX=/s/"$/ net.ifnames=0"/' etc/default/grub

           ②、Centos7、8:  grub2-mkconfig  -o  /boot/grub2/grub.cfg

             Ubuntu:  grub-mkconfig  -o  /boot/grub/grub.cfg

    ④、sed的高级用法:

        sed除了支持空间模式(pattern space),还支持保持空间(Hold space),它只负责暂时保留,不参与sed运算

        h  把pattern内容覆盖到hold空间

        H  把pattern内容追加到hold空间

        g  把hold内容覆盖到pattern空间

        G  把hold内容追加到pattern空间

        d  删除pattern空间的行

      将第三行推到第九行:sed '3h,9G'

                sed '3h,9G;9!d'

                  

  • 相关阅读:
    Spring基于纯注解的声明式事务控制
    Spring基于XML的声明式事务控制
    2.Jersey
    1.解读REST和JAX-RS
    getHibernateTemplate和getSession 区别, this.getHibernateTemplate().getSessionFactory().getCurrentSession()和OpenSession区别
    eclipse安装maven报错
    MyEclipse10 + tomcat8 64位
    理解MVC
    java编程规范
    c3p0详细配置
  • 原文地址:https://www.cnblogs.com/ldyaly/p/12797255.html
Copyright © 2011-2022 走看看