如何使用bash脚本搜索和替换html代码?

时间:2018-09-18 09:36:01

标签: regex bash

我需要创建一个脚本来处理几个html文件以转换这些类型的行:

<link rel="stylesheet" href="assets/css/main.css">

..放入其中:

{stylesheets file='assets/css/main.css'}
        <link rel="stylesheet" href="{$asset_url}">
{/stylesheets}

我还需要以相同的方式在html文件中转换javascript代码。这个:

<script type="text/javascript" src="vendor/revolution/revolution.extension.migration.min.js"></script>

..放入其中:

{javascripts file='vendor/revolution/revolution.extension.migration.min.js'}
    <script src="{$asset_url}"></script>
{/javascripts}

我知道使用regex进行bash的一些基本技巧,例如搜索和替换,但我没有足够的知识来独自完成这项工作。

非常感谢您的帮助。

谢谢。

编辑

链接和脚本始终位于同一行,但它们的参数并不总是相同。

如果使用regex seems to be a bad idea for html,您建议我使用哪种工具?

1 个答案:

答案 0 :(得分:0)

用regex解析HTML不是一个好主意,但是这个丑陋且很可能失败的sed命令可能有机会

sed \
-e 's/\(<link rel="stylesheet" href="\)\([^"]\+\)\(">\)/\n{stylesheets file='\''\2'\''}\n\t\1${asset_url}\3\n{\/stylesheets}\n/g' \
-e 's/\(<script \)type="text\/javascript" \(src="\)\([^"]\+\)\("><\/script>\)/\n{javascripts file='\''\3'\''}\n\t\1\2{$asset_url}\4\n{\/javascripts}\n/g' \
<input_file>