zoukankan      html  css  js  c++  java
  • sed替换文本

    shell 文本替换 ---出现--- sed:-e 表达式 #1,字符 8:“s”的未知选项

    需要替换的行为:

    monitor.url=http://192.168.25.100:8443/rest

    查询资料得知,报错是因为替换的字符串包含有分隔符/

    所以这行改一下分隔符就可以解决问题了  (这里的分隔符随自己定义 例如:sed -i "s#$url#$1#g" datasource.properties  这三个分隔符要统一就可以了)

    改成感叹号!或者|  等其他来分割

    sed -i "s!$url!$1!g" datasource.properties

    关于sed 命令中的转义符为()

    还有一点需要注意的是:

         在某些问文件中不知道修改了什么东西导致文件格式出现了问题、导致使用sed 命令无法对文件进行有效的操作;

          那么出现这样的情况的话就需要进行源文件的还原了;暂时还不明白是何原因

          还有就是刚发现有时候sed 不能使用了,一直都不知道是啥原因、所以就换了一种方式:

          find命令查找和替换

          命令格式:find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g'

          #查找替换当前目录下包含字符串并进行替换

          find -name '*.txt' | xargs perl -pi -e 's|智慧乡村|北部山区|g'

          如果有哪位大神知道的、还请指导一二啊、在下感激不尽、先在此谢过了

    本文来自:http://www.cnblogs.com/tzhyy/p/10207464.html

    2019年6月12日16:47:06

    sed 或用法
    sed -i '/user_host_bind/ s/<!--|-->//g' apps.xml

    思路 首先找到该行特有的东西,然后进行单个替换,替换成功之后,还原文件,尝试替换多个

    例子:
    有一个文件apps.xml

    [root@localhost app]# cat apps.xml 
    <!--<app id="user_host_bind" howin="we1b">-->
    <app id="appform_restrict" howin="web"/>

    想要将该文件中的注释删除,首先找到该文件中对应行,该行只有id是独立的
    所以先用sed匹配id,找到行之后,使用或用法,删除注释

    所以得出

    sed -i '/user_host_bind/ s/<!--|-->//g' apps.xml

    拆分:
      /user_host_bind/ 匹配到关键字所在的行
      s/<!--|-->//g 或用法替换该行中不需要的东西

    sed awk grep 与或用法

    或用法

    sed:
    sed -i 's/text1|text2>//g' apps.xml
    awk: awk '/text1/||/text2/{print $0}' apps.xml
    grep: grep -E '(text1|text2)' apps.xml


    与用法

    sed:
    sed -n '/text1/{/text2/g}' apps.xml
    awk: awk '/text1/&&/text2/{print $0}' apps.xml
    grep: grep -E '(text1|text2)' apps.xml 这里可能有点问题

    sed新用法:

      例如:在文本中某一行后的第三行加入文本内容

    [root@localhost ~]# cat test.txt 
    <ul name="a">
      <li></li>
    </ul>
    <ul name="b">
      <li></li>
    </ul>
    <ul name="c">
      <li></li>
    </ul>

    假如想在第二个ul行下的<li></li>下新加一行<li>新加行</li>,怎么做?

    [root@localhost ~]# sed -e '/name="b"/{n;s|$|
    <li>新加行</li>|}' test.txt 
    <ul name="a">
      <li></li>
    </ul>
    <ul name="b">
      <li></li>
    <li>新加行</li>
    </ul>
    <ul name="c">
      <li></li>
    </ul>

    解释:

    /name="b"/  找到只有一个关键字的行
    n; 在匹配行行向下走一行,如果是3行就写3个n;
    s 在sed中用作修改
    $ 在匹配行的末尾配合后边的 进行换行,然后新加内容

    注:上述方法可能会导致文件出现^M内容,解决方法如下
    cat  test.txt | tr -s "
    " "
    " > new.txtcat new.txt > test.txtrm -rf new.txt

    首先将文件cat出来,使用tr命令修改掉里边多余的^M(这个东西是什么可以百度查阅相关资料,这里不多赘述),保存到new.txt

    然后将修改好的new.txt覆盖到test.txt

    删除new.txt

  • 相关阅读:
    通过DataSet操作XML
    什么是网站流量
    JavaScript总结(2)网页上显示时间
    对xml操作的主要方法
    xml保存图片和读取图片(三)
    SharePoint初探sharepoint 安装宝典(2)
    SharePoint初探启用wss的全文搜索(6)
    转载:sharepoint portal server2003安装小记
    SharePoint初探装完Wss后,无法创建或打开原有Web项目问题(7)
    SharePoint初探SharePoint网站整理(8)
  • 原文地址:https://www.cnblogs.com/despotic/p/10868599.html
Copyright © 2011-2022 走看看