URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 1156
[ Назад ]

Исходное сообщение
"Разбор текстового файла средствами Shell"

Отправлено scripter , 04-Дек-02 09:09 
Есть тестовый файл из нескольких строк. Необходимо получить группу строк, идущих подряд между двумя ключевыми строками, удовлетворяющими заданному условию. Причем в искомых строках условие поиска не выполняется как для ключевых строк, поэтому простое применение grep здесь не прокатит.

Может кто знает, как сделать это средствами shell (bash, sh: wc, awk, sed, grep ...) или perl ?


Содержание

Сообщения в этом обсуждении
"RE: Разбор текстового файла средствами Shell"
Отправлено joker , 04-Дек-02 11:48 
writing' this from M$ MuzDIE without russian locale,so sorry for poor english. %)
2 solve your problem i'd recommend U 2 use bash+awk
for example u've got file

qwe
111
###
$$$
%%%
222
asd

and u need 2 get lines between 111 and 222,i.e. (###,$$$,%%%)
try awk scipt like this
BEGIN {fl=0}
{
  if ($0=="111")
     fl=1;
  else if ($0=="222")
     fl=0;
  else if (fl==1)
    print $0;
}


"RE: Разбор текстового файла средствами Shell"
Отправлено scripter , 05-Дек-02 02:59 
it's 'good' bat not 'cool'.
Спасибо за участие. Довольно аккуратное решение. Хотелось сделать это одной строкой - да видно я слишком размечтался.

"RE: Разбор текстового файла средствами Shell"
Отправлено scripter , 05-Дек-02 05:01 
Y-e-e-S!! Еще раз убеждаюсь - сам не потопаешь - сам не полопаешь.
Решение выглядит так:

  awk '/шаблон_ключа_1/,/шаблон_ключа_2/'