• sed 案例


    sed:Stream Editor文本流编辑,sed是一个“非交互式的”面向字符流的编辑器。能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上。还可以对原文件改动,但是不会再屏幕上返回结果。

    sed命令的选项(option):

    -n :只打印模式匹配的行

    -e :直接在命令行模式上进行sed动作编辑,此为默认选项

    -f :将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作

    -r :支持扩展表达式

    -i :直接修改文件内容

    sed -i '/DEVICE/c\Ethernet' test

    #匹配DEVICE的行,替换成Ethernet这行

    c\ 把选定的行改为新的文本
    [root@kbase ~]# cat test 
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin  
    DEVICE="eth0"  
    BOOTPROTO="static"
    [root@kbase ~]# sed -i '/DEVICE/c\Ethernet' test 
    [root@kbase ~]# cat test 
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin  
    Ethernet
    BOOTPROTO="static"
    sed -i 's/static/dhcp/' test

    static替换成dhcp(/,@,# 地址定界符)

    s 替换指定字符
    [root@kbase ~]# cat test 
    BOOTPROTO="static"  
    HWADDR="00:0C:29:90:79:78"  
    ONBOOT="yes"

    [root@kbase ~]# sed -i 's/static/dhcp/' test
    [root@kbase ~]# cat test
    BOOTPROTO="dhcp"  
    HWADDR="00:0C:29:90:79:78"  
    ONBOOT="yes"


    sed -i 's/BOOTPROTO/#BOOTPROTO/' test
    匹配BOOTPROTO替换成#BOOTPROTO,在配置文件中一般用于注释某行
    [root@kbase ~]# cat test 
    BOOTPROTO="dhcp"  
    HWADDR="00:0C:29:90:79:78"  
    ONBOOT="yes" 
    
    [root@kbase ~]# sed -i 's/BOOTPROTO/#BOOTPROTO/' test 
    [root@kbase ~]# cat test 
    #BOOTPROTO="dhcp"  
    HWADDR="00:0C:29:90:79:78"  
    ONBOOT="yes" 


    sed -i 's/ONBOOT/#&/' test
    & 已匹配字符串标记
    
    
    匹配ONBOOT的行的前面添加#号,在配置文件中也表示注释某行
    [root@kbase ~]# cat test 
    #BOOTPROTO="dhcp"  
    HWADDR="00:0C:29:90:79:78"  
    ONBOOT="yes" 
    
    [root@kbase ~]# sed -i 's/ONBOOT/#&/' test 
    [root@kbase ~]# cat test 
    #BOOTPROTO="dhcp"  
    HWADDR="00:0C:29:90:79:78"  
    #ONBOOT="yes" 
    sed -i '/ONBOOT/s/#//' test
    匹配ONBOOT的行,把#替换成空,即去掉#号,也一般用作去掉#注释
    [root@kbase ~]# cat test 
    #BOOTPROTO="dhcp"  
    HWADDR="00:0C:29:90:79:78"  
    #ONBOOT="yes" 
    
    [root@kbase ~]# sed -i '/ONBOOT/s/#//' test
    [root@kbase ~]# cat test 
    #BOOTPROTO="dhcp"  
    HWADDR="00:0C:29:90:79:78"  
    ONBOOT="yes" 

    参考:

     sed命令详解

    http://man.linuxde.net/sed

  • 相关阅读:
    「分块」学习笔记
    「NOIP 2017」逛公园
    大假期集训模拟赛15
    大假期集训模拟赛14
    大假期集训模拟赛13
    nginx 日志升级
    nginx 日志切割
    nginx 健康检查
    sftp 管理
    Prometheus 学习
  • 原文地址:https://www.cnblogs.com/linuxlinuxlinux/p/7686327.html
Copyright © 2020-2023  润新知