zoukankan      html  css  js  c++  java
  • sed 用法

    删除匹配行的上一行和下一行数据

    1.删除匹配行的上一行和下一行:

    sed -i -e '/string/{n;d}' -e '$!N;/
    .*string/!P;D' filename 


    2.删除匹配到特定字符所在行的上一行

    sed -i -e '$!N;/
    .*string/!P;D' filename


    3.删除匹配到特定字符所在行的下一行

    sed -i -e '/string/{n;d}' filename


    4.sed中使用变量,删除匹配行的上一行和下一行:

    AA=string #变量指定匹配字符串
    sed -i -e '/'"$AA"'$/{n;d}' -e '$!N;/
    .*'"$AA"'$/!P;D' file

    匹配到字符串所在的行的上一行或者是下一行插入一条数据

    a 追加内容 sed ‘/匹配词/a要加入的内容’ example.file(将内容追加到匹配的目标行的下一行位置)
    i 插入内容 sed ‘/匹配词/i要加入的内容’ example.file 将内容插入到匹配的行目标的上一行位置)
    示例:
    我要把文件的包含“chengyongxu.com”这个关键词的行前或行后加入一行,内容为“allow chengyongxu.cn”


    1 行前加:
      

    sed -i '/allow chengyongxu.com/iallow chengyongxu.cn' the.conf.file

    2 行前后:
      

    sed -i '/allow chengyongxu.com/aallow chengyongxu.cn' the.conf.file

    3 给匹配到文件中具体的字符串的下一行插入一行数据:

     sed -i '/listen/a listen 80;' filename


    4 在匹配到特定字符串的某行后批量插入多行数据:

    sed -i '/syncsendmsg.php/a#013.平台广告小时计划每5分钟写入主平台 xxx 2019-07-04
    */5 * * * * /usr/bin/php /data/cron/ptask/countjs_syc_plan_main.php
    */5 * * * * /usr/bin/php /data/cron/ptask/countjs_syc_plan_h_main.php' filename

    5 给匹配到文件中具体的字符串的上一行插入一行数据:

    sed -i '/listen/i listen 80;' filename

    删除匹配到指定字符串所在的行的上一行或者是下一行数据

    1、删除指定行的上一行

    sed -i -e :a -e '$!N;s/.*
    (.*ServerName abc.com)/1/;ta' -e 'P;D' file
    例如:
    [root@VM_82_178_centos vhost]# grep listen m.afpfpm.cn443.conf 
    listen 80;
    listen 443;
    
    删除 listen 443;这一行的上行内容: listen 80;
    sed -i -e :a -e '$!N;s/.*
    (.*listen 443)/1/;ta' -e 'P;D' m.afpfpm.cn443.conf

    2、删除指定字符串之间的内容

    sed -i '/ServerName abc.com/,//VirtualHost/d' $file

    3. 删除匹配行和之后两行
    sed -i '/Storage/,+2d' a.txt

    生产中nginx配置文件替换字符

    sed -i 's/#fastcgi_pass/fastcgi_pass/g;s/fastcgi_pass unix:/dev/shm/php-cgi.sock/#fastcgi_pass

    参考:https://blog.51cto.com/wujianwei/2417796

     
  • 相关阅读:
    docker常用软件安装及使用
    生成base64位图片验证码
    项目经理的特殊需求,对象的移动,
    集成微信支付的代码。兼容小程序,扫码,app,公众号。h5 支付 ,以及 服务商提现
    nginx请求转发配置
    nginx的conf文件,两种配置方式,第一种无ssl证书,第二种有ssl证书。
    Springboot集成WebSocket通信全部代码,即扣即用。
    Centos7上安装docker
    mysql 5.7 的 /etc/my.cnf
    【图嵌入】DeepWalk 和 Node2Vec
  • 原文地址:https://www.cnblogs.com/Tempted/p/13938203.html
Copyright © 2011-2022 走看看