Попробуйте младшее ядро, возможно, что-то от "sid" (иначе Нестабильный).
Простое решение для простых случаев - видит мой комментарий:
echo "<g:gtin>31806831001</g:gtin>" | sed 's|<g:gtin>.*</g:gtin>|<g:gtin></g:gtin>|'
Результат:
<g:gtin></g:gtin>
Это зависит при условии, что запускаются, и endtag находятся на той же строке, и не больше чем один тег находится на той строке.
Так как XML-файлы часто сгенерированы тот же путь, много раз, предположение могло бы содержать.
Один способ использовать perl
:
Содержание script.pl
:
use warnings;
use strict;
use XML::Twig;
die qq[Usage: perl $0 <xml-file>\n] unless @ARGV == 1;
my $twig = XML::Twig->new(
twig_roots => {
q[g:gtin] => \&handle_gtin,
},
twig_print_outside_roots => 1,
);
$twig->parsefile( shift );
sub handle_gtin {
my ($t, $gtin) = @_;
$gtin->set_text( q[] );
$gtin->print;
}
Выполните его как:
perl script.pl file.xml
<g:gtin>(.*?)</g:gtin>
с<g:gtin></g:gtin>
или что-то к тому эффекту? – crmpicco 20.04.2012, 18:21sed 'sedcommands' feed.xml
была бы Ваша опция. Если у Вас есть несколько команд sed, можно поместить их в файл также:sed -f commands.sed feed.xml
. Существует много опций. Флаг-i:sed -i 'commands' feed.xml
изменил бы Ваш файл на месте. – user unknown 20.04.2012, 18:36sed
спецификация.sed
и regex не являются корректным или большей частью устойчивого способа обработать XML так или иначе. – jw013 20.04.2012, 19:52