zoukankan      html  css  js  c++  java
  • sed

    Sed

    sed:linux三剑客之一,sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作。

    其中,sed的替换功能应用极为广泛,下面主要先介绍下它的替换功能。

    取IP地址的例子:过滤功能

      ifconfig eth0|sed -n '2p'|sed -nr 's#^.*addr:([0-9].*) B.*#1#gp'

      结果:ip地址

    sed替换功能举例如下:

    [root@xhsj_ClouderaManager test]# cat test.txt
    oldboy
    oldboy

    把oldboy替换成oldgirl:

    sed -i 's/oldboy/oldgirl/' test.txt

    结果:

    cat test.txt
    oldgirl
    oldgirl

    s:表示查找并替换。 

    find与sed结合以及例子

    把/data/目录下所有含有test文件的里面的内容里的oldboy换成oldgirl: find与sed结合

    [root@saltstack-client1 data]# pwd

    /data

    [root@saltstack-client1 data]# ls

    a  b  c  d  e  test  tomcat 

    法一:

    [root@saltstack-client1 data]# find /data/ -type f -name "test.txt" |xargs sed -i 's#oldboy#oldgirl#g' 

    法二:

    [root@saltstack-client1 data]# find /data/ -type f -name "test.txt" -exec sed -i  's#oldboy#oldgirl#g' {} ; 

    Sed命令实战复习回顾

    打印

    例子:

    [root@saltstack-client1 data]# cat oldboy.txt

    ddd fff

    2ddd fff

    3ddd fff 

    打印第二行内容:

    [root@saltstack-client1 data]# sed -n '2p' oldboy.txt

    2ddd fff 

    打印第一行到第二行的内容:

    [root@saltstack-client1 data]# sed -n '1,2p' oldboy.txt

    ddd fff

    2ddd fff

    替换

    把文件里内容里的所有的ddd换成oldboy:

    [root@saltstack-client1 data]# sed -i 's#ddd#oldboy#g' oldboy.txt

    [root@saltstack-client1 data]# cat oldboy.txt

    oldboy fff

    2oldboy fff

    3oldboy fff

    Sed的后项引用

    Sed的后项引用:

     

    后向引用的例子:

    取出ip地址的例子:sed 

     [root@saltstack-client2 test]# ifconfig

    eth2      Link encap:Ethernet  HWaddr 52:54:00:55:D7:6D 

              inet addr:10.122.129.55  Bcast:10.122.129.255  Mask:255.255.255.0

              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

              RX packets:2876420 errors:0 dropped:0 overruns:0 frame:0

              TX packets:265070 errors:0 dropped:0 overruns:0 carrier:0

              collisions:0 txqueuelen:1000

              RX bytes:693181412 (661.0 MiB)  TX bytes:24669346 (23.5 MiB)

    lo        Link encap:Local Loopback 

              inet addr:127.0.0.1  Mask:255.0.0.0

              UP LOOPBACK RUNNING  MTU:16436  Metric:1

              RX packets:84802 errors:0 dropped:0 overruns:0 frame:0

              TX packets:84802 errors:0 dropped:0 overruns:0 carrier:0

              collisions:0 txqueuelen:0

              RX bytes:4240622 (4.0 MiB)  TX bytes:4240622 (4.0 MiB)

    法一:sed 

    [root@saltstack-client2 test]# ifconfig eth2|sed -n 's#^.*dr:([0-9].*) Bcast.*$#1#gp'

    10.122.129.55 

    法二:sed

    [root@saltstack-client2 test]# ifconfig|sed -n '2p'|sed -n 's#^.*dr:([0-9].*) Bcast.*$#1#gp'

    10.122.129.55

    法三:自己搞的

    [root@saltstack-client1 ~]# ifconfig eth2

    eth2      Link encap:Ethernet  HWaddr 52:54:00:3C:DD:D5 

              inet addr:10.122.129.54  Bcast:10.122.129.255  Mask:255.255.255.0

              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

              RX packets:3775521 errors:0 dropped:0 overruns:0 frame:0

              TX packets:418876 errors:0 dropped:0 overruns:0 carrier:0

              collisions:0 txqueuelen:1000

              RX bytes:881222306 (840.3 MiB)  TX bytes:38853944 (37.0 MiB)

     [root@saltstack-client1 ~]# ifconfig eth2|sed -n 's#^.* addr:([0-9].*) Bca.*$#1#gp'

    10.122.129.54

    Sed与正则表达式相关以及相关的例子

    sed -r 's#(可以用正则匹配)#1#g' oldboy.txt 

    r:表示小括号里一些特殊字符不需要反斜线转义了,而是使用正则。 

    例子:

    [root@saltstack-client1 data]# cat oldboy.txt

    oldboy fff

    2oldboy fff

    3oldboy fff

    [root@saltstack-client1 data]# sed -r 's#(.*)ff#1#g' oldboy.txt

    oldboy f

    2oldboy f

    3oldboy f

    [root@saltstack-client1 data]# sed -r 's#(.*)f#1#g' oldboy.txt

    oldboy ff

    2oldboy ff

    3oldboy ff

    [root@saltstack-client1 data]# sed -r 's#(.*) (.*)#1 2#g' oldboy.txt

    oldboy fff

    2oldboy fff

    3oldboy fff

    [root@saltstack-client1 data]# sed -r 's#(.*)#1#g' oldboy.txt

    oldboy fff

    2oldboy fff

    3oldboy fff 

  • 相关阅读:
    就这样吧
    搞了个1.0版本,名字和预定的一样改成OIFaQ了
    算了,总结一下教训
    我刚经历了人生中第一次版本回滚,目前感觉良好,请党和人民放心
    这有点爽的
    我决定出1.0的时候改名叫OIFaQ
    换个SSD把D盘弄飞了
    算是交代一下这三天的空白
    构建之法读书笔记03
    构建之法读书笔记02
  • 原文地址:https://www.cnblogs.com/renyongbin/p/6553783.html
Copyright © 2011-2022 走看看