The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"выборка с помощью awk"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Разное)
Изначальное сообщение [ Отслеживать ]

"выборка с помощью awk"  +/
Сообщение от the_strelock (ok) on 26-Сен-14, 13:40 
Доброго времени суток,
прошу помощи с решением задачи:

есть файл со структурой:

...
<legal>
    <id>250</id>
    <source>AA</source>
    <type>BB</type>
</legal>
...


файл большой, куча тегов, встречаются именно "секции" <legal> (они по 5 строк с учетом тегов, но не должно быть привязки в пятерке!)
нужно вывести все секции <legal> (под секцией я понимаю строки от открытого тега, до закрытого, т.е. пять строк), в которых ID != 250 (Значения ID численный, могут быть случайными).

Нужно решить задачу средствами AWK.

Мое решение:
awk ' ($0~/\<legal_entity\>/ && $0!~/\//) , ($0~/\<legal_entity\>/ && $0~/\//) { print $0 }' tads | grep -v \<id\>0840\</id\> | grep \<id\>[0-9][0-9][0-9][0-9]\</id\> -B 1 -A 3

не подходит, т.к. awk только секции выделяет, а дальнейшая обработка идет при помощи grep... а нужно awk (можно не в одну команду, можно с циклами, но главное без grep).
и так же присутствует привязка к колву строк - что тоже не подходит - в теории колво строк между этими тегами может менятся.

awk ' ($0~/\<legal_entity\>/ && $0!~/\//) , ($0~/\<legal_entity\>/ && $0~/\//) { print $0 }' tads
выберет все теги, без привязки к числу строк, а как сделать выборку по ID???

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "выборка с помощью awk"  +/
Сообщение от Pahanivo (ok) on 26-Сен-14, 13:51 
Почем именно awk?????? Что за странная тяга решать задачи xml-парсинга при помощи awk - awk это построчный парсер с надстройками позволяющими парсить многострок, не более.


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "выборка с помощью awk"  +/
Сообщение от Andrey Mitrofanov on 26-Сен-14, 14:05 
> Нужно решить задачу средствами AWK.

Зачем?
   Когда в руках молоток - всё кругом гвозди?
   Или препод изобретательный?
   Я для разминки сделал, допустим...

$ type dat
dat является функцией
dat ()
{
    seq 10 240 490 | awk '{print"<legal>\n  <id>"$0"</id>\n  <source>AA</source>\n  <type>BB</type>\n</legal>"}'
}
$ magic_filter(){ awk 'ВЫРЕЗАНО ЦЕНЗУРОЙ'; }; dat|magic_filter
<legal>
  <id>10</id>
  <source>AA</source>
  <type>BB</type>
</legal>
<legal>
  <id>490</id>
  <source>AA</source>
  <type>BB</type>
</legal>
$ _

> не подходит, т.к. awk только секции выделяет, а дальнейшая обработка идет при

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "выборка с помощью awk"  +/
Сообщение от Andrey Mitrofanov on 26-Сен-14, 14:19 
> Почем именно awk?????? Что за странная тяга решать задачи xml-парсинга при помощи
> awk - awk это построчный парсер с надстройками позволяющими парсить многострок,
> не более.

Ну, во-первых, тренировка: освоить этот самый awk [почти:)] как этот самый Митрофанов.

К сожалению примерно сюда попадает и "научить ленивых студиозусов хоть паре гитик этого самого авка" и тогда подачки на форумах действуют _ровно _против поставленной задачи, они _не учатся.

Во-вторых, xml/xslt интрументы ещё нужно иметь и :> уметь, а awk (и perl, да) есть везде, а при некоторой изобретательности и/или наблюдательности Общая Задача Парсинга Любого XML сводится к частному случаю, вполне доступному построчному инструменту (awk/perl). Но эта вторая часть уже немного "out of the box" тех пары гитик из первой части. Преподу опять же поможет отличить тех, кто на 5-с-плюсом от остальных, которые "на пересдачу" или "3 и свободен".

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "выборка с помощью awk"  +/
Сообщение от the_strelock (ok) on 26-Сен-14, 14:21 
препод дико изобретательный...
я получил задачки для освоения grep'а, потом перешли к awk - он и говорит - теже сделай, только без grep'а...

это так задумано, или форум вырубал кусок:

$ magic_filter(){ awk 'ВЫРЕЗАНО ЦЕНЗУРОЙ'; }; dat|magic_filter

я правильно понял, что

dat ()
{
    seq 10 240 490 | awk '{print"<legal>\n  <id>"$0"</id>\n  <source>AA</source>\n  <type>BB</type>\n</legal>"}'
}

задает три значения ID???

а выполняется все при помощи magic_filter, который "поцензурен"?

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "выборка с помощью awk"  +/
Сообщение от the_strelock (ok) on 26-Сен-14, 14:23 
мужики, учусь не в универе, а на работе)
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "выборка с помощью awk"  +/
Сообщение от тень_pavel_simple on 26-Сен-14, 22:00 
> мужики, учусь не в универе, а на работе)

А зряплату тоже суда передавать будешь?

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

8. "выборка с помощью awk"  +/
Сообщение от Pahanivo (ok) on 27-Сен-14, 21:26 
> мужики, учусь не в универе, а на работе)

есть куча хороших книжонок аля "утилиты юникс консоли", также есть куча книжек типа "основы администрирования nix-like" (именно, об общих принципах, а не о конкретной ОСи).
почитав пару дней можно легко стать гуру покруче Митрофаныча (нужен только мозг). по крайней мере (опять же при наличии мозга) можно научится решать целые классы задач, предназначенными для это инструментами.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

9. "выборка с помощью awk"  +/
Сообщение от fx (ok) on 29-Сен-14, 15:27 
> можно научится решать целые классы задач, предназначенными для это инструментами

можно научиться решать целые классы задач предназначенными для этого инструментами

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "выборка с помощью awk"  +/
Сообщение от Аноним (??) on 30-Сен-14, 10:11 
> Почем именно awk?????? Что за странная тяга решать задачи xml-парсинга при помощи
> awk - awk это построчный парсер с надстройками позволяющими парсить многострок,
> не более.

Так предложи xml-парсер консольный. Возможно одумается.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

11. "выборка с помощью awk"  +/
Сообщение от Аноним (??) on 02-Окт-14, 00:07 
> Так предложи xml-парсер консольный. Возможно одумается.

Ну а сам чего скромничаешь?

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема


  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor