sed - Как вставить текст перед совпавшим шаблоном в файл - PullRequest
0 голосов
/ 04 июня 2018

У меня есть файл a.html с содержимым, подобным приведенному нижевсе вхождения одновременно с sed?

1 Ответ

0 голосов
/ 04 июня 2018

Ввод:

$ more a.html 
<body>
        <script src="one.sample.js" />
        <script src="two.sample.js" />
        <script src="three.sample.js" />
</body>

Преобразование:

$ more htmlScriptConvertor.xslt m
::::::::::::::
htmlScriptConvertor.xslt
::::::::::::::
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="xml" indent="yes" />
    <xsl:strip-space elements="*"/>

    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()" />
        </xsl:copy>
    </xsl:template>

    <xsl:template match="//script[@src]">
        <script src="{concat('/web/test/src/',@src)}"></script>
    </xsl:template>

</xsl:stylesheet>

Это скопирует все, кроме узлов сценария, которые содержат src attribute (вы можете добавить ограничения, что значение атрибута должно заканчиваться, например, .js), если вам нужно ограничить преобразование сценариями javascript.

Вывод:

$ xsltproc --html htmlScriptConvertor.xslt a.html
<?xml version="1.0"?>
<html>
  <body>
    <script src="/web/test/src/one.sample.js"/>
    <script src="/web/test/src/two.sample.js"/>
    <script src="/web/test/src/three.sample.js"/>
  </body>
</html>

Перенаправьте его и сохраните в a_new.html

...