【问题标题】:Replace all the occurences of JS with an empty line using sed [duplicate]使用 sed [重复] 将所有出现的 JS 替换为空行
【发布时间】:2019-08-25 04:59:15
【问题描述】:

我有大约 50 个 html 文件,我必须用空行替换完整性和 sha 部分

在所有的 html 文件中我们都可以找到常用的 JS

<script crossorigin='anonymous' integrity='sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q' src='https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js'></script>

我只需要用

替换它
<script src='https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js'></script>

我尝试了sed 命令

sed -i -e 's|<script crossorigin='anonymous' integrity='sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q' src='https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js'></script>|<script src='https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js'></script>|g' *.html 

它并没有取代任何一个

【问题讨论】:

  • HTML 有很多边缘情况,仅使用正则表达式很难解析。你愿意接受使用 BeautifulSoup 解析器的 Python 脚本吗?
  • 是的,但是我设法在 sed 命令中做到了,而且效果很好,
  • 您可以回答自己的问题,以便将来的读者。 :-)

标签: html regex linux shell sed


【解决方案1】:

我终于想通了,并设法替换了我所有 html 文件中的 js

sed -i -e "s|<script crossorigin='anonymous' integrity='sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q' src='https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js'></script>|<script src='https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js'></script>|" *.html ```

【讨论】:

    【解决方案2】:

    使用给定的字符串如下所示,考虑到第一个和最后一个空格之间的所有内容都将被删除,并且 URL 字符串中没有空格,所以你可以这样做:

    < test.txt sed 's/ .* / /'
    <script src='https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js'></script>
    

    而 test.txt 包含原始字符串。

    【讨论】:

      猜你喜欢
      • 2021-10-21
      • 2013-07-23
      • 2019-08-18
      • 2021-11-12
      • 2015-01-08
      • 2022-12-22
      • 1970-01-01
      • 1970-01-01
      • 2013-03-28
      相关资源
      最近更新 更多