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'

                  

  • 相关阅读:
    C 获取编译日期函数
    C# HttpWebRequest 使用,一个Http分析Demo
    C# 字节序调整
    char/wchar_t之间的互转MultiByteToWideChar和WideCharToMultiByte的用法
    前导声明代替头文件依赖和交叉包含
    MFC network address control使用
    [收藏]POSIX标准
    带引用计数的智能指针
    C# string byte[] 转换
    DIV随鼠标滚动
  • 原文地址:https://www.cnblogs.com/ldyaly/p/12797255.html
Copyright © 2011-2022 走看看