1 (30-09-2014 13:18:48 отредактировано price.of.the.flight)

Тема: Помогите с алгоритмом на shell, пожалуйста

Имеется файл tm.csv
    С форматом: xxx,yyy,zzz…
    В шестой колонке содержаться ID.
   
    Второй файл rs.xml
    В нем "этиже" ID содержаться в тегах <ID> & </ID>.
    Теги ID по схеме помещены в теги <PROD_TYPE> & </PROD_TYPE> в них есть и другие…
     <PROD_TYPE>
        …
        <ID>
        </ID>
        …
    </PROD_TYPE>
   
   
    Нужно по ID из tm.csv вывести соответствующие секции <PROD_TYPE> из rs.xml.
   
    (awk ' BEGIN {FS=","} {print $6} ' tm.csv) #получили все ID из tm.csv
   
    Но нужно получить след. Картину:

ID
         <PROD_TYPE>
            …
            <ID>
            </ID>
            …
        </PROD_TYPE>
       
       
    ID
         <PROD_TYPE>
            …
            <ID>
            </ID>
            …
        </PROD_TYPE>
       
    Подскажите, пожалуйста, как по ID вывести целиком секцию <PROD_TYPE> к которой он принадлежит???

    Grep с ключами -A и -B не подходит, т.к.  Кол-во строк в тегах  <PROD_TYPE> может сильно варьироваться…

Нужна какая-то выборка тегов <PROD_TYPE> с проверкой условий, что ID совпадает, который в нем… я не могу придумать реализуемый алгоритм…

2

Re: Помогите с алгоритмом на shell, пожалуйста

Вот мой пример https://unix-forum.ru/topic1754.html как на awk искать "zone {}" разделы, переделайте под "<></>" но вообще правильнее использовать перл или еще что-то что понимает xml.