B
B
bik2016-06-26 21:40:10
Perl
bik, 2016-06-26 21:40:10

How to cut text between two tags in xml?

Good evening!
Guys please help. remove text between description tags:
pastebin.com/bm31r1sh
I tried it myself, but without result:

sed 's#\(<description>\).*\(</description>\)#\1'xxxxx'\2#g' test.xml > test2.xml
sed '/<description>/,/<\/description>/{//!d}' test.xml > test2.xml

The file itself is very large and xml utilities crash during processing.
Thanks in advance!

Answer the question

In order to leave comments, you need to log in

3 answer(s)
A
abcd0x00, 2016-06-27
@abcd0x00

First you prepare the text to make it more comfortable, then you process it. Because of this, sed is called twice.

text="\
a
b
c
x1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<description>
  Туалетная вода-спрей
  &lt;br&gt;ВОСТОЧНЫЙ ФУЖЕР
  &lt;br&gt;Мужчина в стиле ориентирован на успех, целеустремлен и созидателен. Мужественность, достоинство, уверенность – его главные черты,    наряду с чувственностью и романтичностью. Он любит комфорт, красивые вещи,   роскошную жизнь и выражает себя в классическом пок$
 &lt;br&gt;Ключевые слова: Уверенный, динамичный, мужественный, благородный,  элегантный, статусный, успешный</description>y1yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
x2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<description>
  Туалетная вода-спрей
  &lt;br&gt;ВОСТОЧНЫЙ ФУЖЕР
  &lt;br&gt;Мужчина в стиле ориентирован на успех, целеустремлен и созидателен. Мужественность, достоинство, уверенность – его главные черты,    наряду с чувственностью и романтичностью. Он любит комфорт, красивые вещи,   роскошную жизнь и выражает себя в классическом пок$
 &lt;br&gt;Ключевые слова: Уверенный, динамичный, мужественный, благородный,  элегантный, статусный, успешный</description>y2yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
d
e
f
"

echo -n "$text"

echo -n "$text" | sed 's%<description>%&x|||%g; s%</description>%|||x&%g' \
                | sed '/x|||/ { :join N; /|||x/! b join ; s/x|||.*|||x// }'

Conclusion
[[email protected] ~]$ text="\
> a
> b
> c
> x1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<description>
>   Туалетная вода-спрей
>   &lt;br&gt;ВОСТОЧНЫЙ ФУЖЕР
>   &lt;br&gt;Мужчина в стиле ориентирован на успех, целеустремлен и созидателен. Мужественность, достоинство, уверенность – его главные черты,    наряду с чувственностью и романтичностью. Он любит комфорт, красивые вещи,   роскошную жизнь и выражает себя в классическом пок$
>  &lt;br&gt;Ключевые слова: Уверенный, динамичный, мужественный, благородный,  элегантный, статусный, успешный</description>y1yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
> x2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<description>
>   Туалетная вода-спрей
>   &lt;br&gt;ВОСТОЧНЫЙ ФУЖЕР
>   &lt;br&gt;Мужчина в стиле ориентирован на успех, целеустремлен и созидателен. Мужественность, достоинство, уверенность – его главные черты,    наряду с чувственностью и романтичностью. Он любит комфорт, красивые вещи,   роскошную жизнь и выражает себя в классическом пок$
>  &lt;br&gt;Ключевые слова: Уверенный, динамичный, мужественный, благородный,  элегантный, статусный, успешный</description>y2yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
> d
> e
> f
> "
[[email protected] ~]$ 
[[email protected] ~]$ echo -n "$text"
a
b
c
x1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<description>
  Туалетная вода-спрей
  &lt;br&gt;ВОСТОЧНЫЙ ФУЖЕР
  &lt;br&gt;Мужчина в стиле ориентирован на успех, целеустремлен и созидателен. Мужественность, достоинство, уверенность – его главные черты,    наряду с чувственностью и романтичностью. Он любит комфорт, красивые вещи,   роскошную жизнь и выражает себя в классическом пок$
 &lt;br&gt;Ключевые слова: Уверенный, динамичный, мужественный, благородный,  элегантный, статусный, успешный</description>y1yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
x2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<description>
  Туалетная вода-спрей
  &lt;br&gt;ВОСТОЧНЫЙ ФУЖЕР
  &lt;br&gt;Мужчина в стиле ориентирован на успех, целеустремлен и созидателен. Мужественность, достоинство, уверенность – его главные черты,    наряду с чувственностью и романтичностью. Он любит комфорт, красивые вещи,   роскошную жизнь и выражает себя в классическом пок$
 &lt;br&gt;Ключевые слова: Уверенный, динамичный, мужественный, благородный,  элегантный, статусный, успешный</description>y2yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
d
e
f
[[email protected] ~]$ 
[[email protected] ~]$ echo -n "$text" | sed 's%<description>%&x|||%g; s%</description>%|||x&%g' \
>                 | sed '/x|||/ { :join N; /|||x/! b join ; s/x|||.*|||x// }'
a
b
c
x1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<description></description>y1yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
x2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<description></description>y2yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
d
e
f
[[email protected] ~]$

P
pcdesign, 2016-06-27
@pcdesign

If I understand the question correctly, then in perl you can do this:

use strict;
use warnings;
use utf8;

my $text = <<'EOF';
<description>
  Туалетная вода-спрей
  &lt;br&gt;ВОСТОЧНЫЙ ФУЖЕР
  &lt;br&gt;Мужчина в стиле ориентирован на успех, целеустремлен и созидателен. Мужественность, достоинство, уверенность – его главные черты,    наряду с чувственностью и романтичностью. Он
 любит комфорт, красивые вещи,   роскошную жизнь и выражает себя в классическом пок$
 &lt;br&gt;Ключевые слова: Уверенный, динамичный, мужественный, благородный,  элегантный, статусный, успешный</description>

EOF

$text =~ s{<description>.*?</description>}{<description></description>}gsi;

print $text;

Result:
<description></description>

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question