• linux中sed工具的使用


      

      sed 本身也是一个管线命令,而且 sed 还可以将数据进行取代、删除、新增、撷取特定行等等的功能。

    $ sed [-nefr] [动作]
    选项与参数:
    -n  :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到屏幕上。
          但如果加上 -n 参数后,则只有经过 sed 特殊处理的那一行(或者动作)才会被列出来。
    -e  :直接在命令行界面上进行 sed 的动作编辑;
    -f  :直接将 sed 的动作写在一个文件内, -f filename 则可以执行 filename 内的 sed 动作;
    -r  :sed 的动作支持的是延伸型正则表达式的语法。(默认是基础正则表达式语法)
    -i  :直接修改读取的文件内容,而不是由屏幕输出。
    
    动作说明:  [n1[,n2]]function
    n1, n2 :不见得会存在,一般代表“选择进行动作的行数”,举例来说,如果我的动作
             是需要在 10 到 20 行之间进行的,则“ 10,20[动作行为] ”
    
    function 有下面这些咚咚:
    a   :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
    c   :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
    d   :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
    i   :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
    p   :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
    s   :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正则表达式!
          例如 1,20s/old/new/g 就是啦!
    1.删除
    $ nl 1.txt
         1    helloworld
         2    haa
         3    12345678
         4    !@#$%^&*(
         5    ASDwexvRSD
         6    ,./]];]{}_()^%
         7    asdasdasd
           
    $ nl 1.txt| sed '2,5d'
         1    helloworld
         6    ,./]];]{}_()^%
         7    asdasdasd

    2.插入

    $ nl 1.txt|sed '1a weather is hot!'
         1    helloworld
    weather is hot!
         2    haa
         3    12345678
         4    !@#$%^&*(
         5    ASDwexvRSD
         6    ,./]];]{}_()^%
         7    asdasdasd

    3.查看第4~5行的数据

    $ nl 1.txt|head -n 5|tail -n 2
         4    !@#$%^&*(
         5    ASDwexvRSD

    使用sed更加简单方便

    $ nl 1.txt|sed -n '4,5p'
         4    !@#$%^&*(
         5    ASDwexvRSD

    4.获取ip地址

    (1)使用ifconfig获取网卡信息。

    (2)通过inet过滤ip信息

    $ ifconfig|grep 'inet '
            inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
            inet 192.168.56.101  netmask 255.255.255.0  broadcast 192.168.56.255
            inet 127.0.0.1  netmask 255.0.0.0

    (3)替换前面的inet

    $ ifconfig|grep 'inet '|sed 's/^.*inet//g'
     10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
     192.168.56.101  netmask 255.255.255.0  broadcast 192.168.56.255
     127.0.0.1  netmask 255.0.0.0

    (4)将netmask到最后都替换掉

    $ ifconfig|grep 'inet '|sed 's/^.*inet//g'|sed 's/ *netmask.*$//g'
     10.0.2.15
     192.168.56.101
     127.0.0.1


  • 相关阅读:
    Android在layout xml中使用include完成静态加载
    ImageSwitch图像切换控件
    合并石子大总结
    子矩阵(暴搜(全排列)+DP)
    回路(一笔画问题)
    道路重建(记忆化搜索+贪心)
    【NOIP2013 普及组】车站分级
    UML的基本关联
    Matlab画图-非常具体,非常全面
    面向对象程序设计与面向过程程序设计解析
  • 原文地址:https://www.cnblogs.com/lzeffort/p/7237268.html
Copyright © 2020-2023  润新知