zoukankan      html  css  js  c++  java
  • sed命令替换文件内容

    reference:

    https://www.cnblogs.com/starof/p/4181985.html

    抓取目录名并修改

    ls | grep "XXX" > 1.txt

    sed命令下批量替换文件内容   

    格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` 文件名

    -i 表示inplace edit,就地修改文件

     -r 表示搜索子目录

     -l 表示输出匹配的文件名
    s表示替换,d表示删除

    示例:sed -i "s/shan/hua/g"  lishan.txt

              把当前目录下lishan.txt里的shan都替换为hua

    sed的其他用法如下:

    1、删除行首空格
       sed 's/^[ ]*//g' filename
       sed 's/^ *//g' filename
       sed 's/^[[:space:]]*//g' filename

    2、行后和行前添加新行
       行后:sed 's/pattern/& /g' filename
       行前:sed 's/pattern/ &/g' filename
       &代表pattern

    3、使用变量替换(使用双引号)
        sed -e "s/$var1/$var2/g" filename

    4、在第一行前插入文本
        sed -i '1 i插入字符串' filename

    5、在最后一行插入
        sed -i '$ a插入字符串' filename

    6、在匹配行前插入
        sed -i '/pattern/ i "插入字符串"' filename

    7、在匹配行后插入
       sed -i '/pattern/ a "插入字符串"' filename

    8、删除文本中空行和空格组成的行以及#号注释的行
       grep -v ^# filename | sed /^[[:space:]]*$/d | sed /^$/d

    1、删除文档的第一行

    sed -i '1d' <file>

    2、删除文档的最后一行
    sed -i '$d' <file>

    3、在文档指定行中增加一行
    例如文档如下:
    echo "1";
    echo "2";
    echo "4";
    echo "5";
    想要在echo "2";后面加上一条echo "3";可以用如下命令
    sed -i '/echo "2";/aecho "3";' <file>
    之所以用分号,是因为文本中本来就有,也就是说分号不是必须的.
    抽象出来就是: sed -i '/* /a*' <file>

    4、删除文件中的第k行,例如k=3
    sed -i '3d' <file>

    5、删除文件中包含某个关键字开头的所有行
    sed -i '/^QWQ/d' <file>

    6、删除文件中包含某个关键字的所有行
    sed -i '/QWQ/d' <file>

  • 相关阅读:
    rsync+sersync实现文件同步
    HTTP 响应码
    ipv4和ipv6的区别
    查看linux系统版本信息
    MQ基础知识学习
    自动化测试的框架介绍和选择
    python(目录)
    分布式和集群
    raid 工作模式 raid0 raid1 raid10 raid5
    CentOS Docker安装
  • 原文地址:https://www.cnblogs.com/xuefy/p/11612736.html
Copyright © 2011-2022 走看看