Как раскомментировать xml-узел из командной строки? - PullRequest
0 голосов
/ 11 мая 2011

Регулярное выражение для выбора нужного узла будет выглядеть примерно так:

<!--\s*<env-entry>(.*\s*)*</env-entry>\s*-->

, где xml-файл содержит:

<!--
    <env-entry>
       <env-entry-name>solr/home</env-entry-name>
       <env-entry-value>/put/your/solr/home/here</env-entry-value>
       <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>
   -->
<!--
    <other-entry>
    </other-entry>
   -->

Как раскомментировать выбранный узел (возможно, с помощью sed/ AWK)

1 Ответ

1 голос
/ 11 мая 2011

Вот грубое решение, оно может иметь ошибки в угловых случаях, поэтому протестируйте его внимательно:

/<!--/ {
    comment = $0
    getline
    if ($0 !~ /<env-entry>/) print comment
}

/-->/ {
    if (last_line ~ /<\/env-entry>/) next
}

{
    last_line = $0
    print
}

ОБНОВЛЕНИЕ: я забыл упомянуть, что решение в AWK, на всякий случай.

...