2017-02-01 2 views
0

Я пытаюсь использовать sed для анализа файла журнала, чтобы извлечь из него XML-сообщения с помощью шаблона. Я хочу получить все xml-сообщения в новом файле.Анализ файла журнала с sed в linux

Я использую эту команду sed 's/<sending>\(.*\)<\/sending>/\1/' input.out>output.xml

input.out имеют следующие:

Контент
WARNING: Exchange[ExchangePattern: InOut, BodyType: byte[], Body: <?xml version="1.0" encoding="utf-8" standalone="yes"?><sending><query>  <describe>   <data>city</data>  </describe> </query></sending>] 
Sep 26, 2016 11:54:30 AM org.apache.camel.util.CamelLogger log 
WARNING: Exchange[ExchangePattern: InOut, BodyType: byte[], Body: <?xml version="1.0" encoding="utf-8" standalone="yes"?><sending> <query>  <key_info/> </query></sending>] 

Я ожидаю, чтобы получить результат, как это:

<query>  <describe>   <data>city</data>  </describe> </query> <query>  <key_info/> </query> 

Но я только получаю исходный файл без <sending> и </sending> таких элементов:

WARNING: Exchange[ExchangePattern: InOut, BodyType: byte[], Body: <?xml version="1.0" encoding="utf-8" standalone="yes"?><query>  <describe>   <data>city</data>  </describe> </query>] 
Sep 26, 2016 11:54:30 AM org.apache.camel.util.CamelLogger log 
WARNING: Exchange[ExchangePattern: InOut, BodyType: byte[], Body: <?xml version="1.0" encoding="utf-8" standalone="yes"?> <query>  <key_info/> </query>] 

Извините за мой английский и приятный день. Спасибо за помощь.

+0

попробуйте 'grep -oP '\ \ K. * (? = \ <\/sending\>) 'filename' –

ответ

0
sed 's/.*<sending>\(.*\)<\/sending>.*/\1/' input.out>output.xml 

вы забыли удалить окружающую часть линии (.*), СЭД принимать только содержание вашего шаблона и не включать символ, до или после отправки блока

прямо сейчас я предлагаю

sed -e '/.*<sending>\(.*\)<\/sending>.*/!d' -e 's//\1/' input.out>output.xml 

удаляет строку, которая не имеет отправляющего блока. Не забывайте, что sed принимает самый длинный partterne, поэтому, если есть 2 блока на одной и той же линии (или более), которые требуется с первой отправки до последнего/отправки

+0

NeronLeVelu, большое вам спасибо, я разобрался с проблемой – Evgeny

Смежные вопросы