Страница 1 из 1

Нужна помащь по парсу файла

Добавлено: 2011-07-20 15:16:42
ruslanstep1
есть фаил на кадировку внутри него не смотрите там вот такое содержимое мне нужна помащь по парсу его

Код: Выделить всё

DATA
---------------------------------------------------------------------------
TIP				    KOLVO
------------------------------ ----------
07.03.2007
?????????? ???????????		      230

08.03.2007
?????????? ???????????		      230

03.03.2007
?????????? ???????????		      102


DATA
---------------------------------------------------------------------------
TIP				    KOLVO
------------------------------ ----------
06.03.2007
?????????? ???????????		      230

01.03.2007
?????????? ???????????		      102

10.03.2007
?????????? ???????????		      230


DATA
---------------------------------------------------------------------------
TIP				    KOLVO
------------------------------ ----------
04.03.2007
?????????? ???????????		      102

09.03.2007
?????????? ???????????		      230

28.02.2007
?????????? ???????????		       42
вот в такой формат

Код: Выделить всё

04.03.2007;?????????? ???????????;102;
09.03.2007;?????????? ???????????;230;
28.02.2007;?????????? ???????????;42;

Re: Нужна помащь по парсу файла

Добавлено: 2011-07-20 20:39:16
rmn

Код: Выделить всё

remcomp% cat script.sh 
#!/bin/sh

rows="`cat file.txt | grep -v ^$ | grep -v DATA | grep -v TIP | grep -v "\-\-" | wc -l`"
rows="`expr $rows \/ 2`"

cat file.txt | grep -v ^$ | grep -v DATA | grep -v TIP | grep -v "\-\-" | rs ${rows} | 
(
        while read line
        do
                echo "$line"
        done
)

remcomp% ./script.sh
07.03.2007   ??????????   ???????????  230
08.03.2007   ??????????   ???????????  230
03.03.2007   ??????????   ???????????  102
06.03.2007   ??????????   ???????????  230
01.03.2007   ??????????   ???????????  102
10.03.2007   ??????????   ???????????  230
04.03.2007   ??????????   ???????????  102
09.03.2007   ??????????   ???????????  230
28.02.2007   ??????????   ???????????  42
а там уже через awk выделяй поля и проставляй ";"

Re: Нужна помащь по парсу файла

Добавлено: 2011-07-21 8:15:49
ruslanstep1
спасибо все норма тока ругается вот на это rs ${rows} | что именно он должен делать

Re: Нужна помащь по парсу файла

Добавлено: 2011-07-21 10:24:25
rmn
ruslanstep1 писал(а):что именно он должен делать
Объединяет строку с датой и следующую за ней в одну

Re: Нужна помащь по парсу файла

Добавлено: 2011-07-22 8:10:20
ruslanstep1
в моем случае он говорит что такой команды нет

Re: Нужна помащь по парсу файла

Добавлено: 2011-07-22 12:06:29
rmn

Код: Выделить всё

remcomp% man rs
RS(1)                   FreeBSD General Commands Manual                  RS(1)

NAME
     rs -- reshape a data array

SYNOPSIS
     rs [-[csCS][x] [kKgGw][N] tTeEnyjhHmz] [rows [cols]]

...

HISTORY
     The rs utility first appeared in 4.2BSD.

...

Re: Нужна помащь по парсу файла

Добавлено: 2011-07-22 13:14:55
kpp
Как по мне, подобная задача логичнее решается через потоковый редактор sed :

Код: Выделить всё

#!/bin/sh

sed -n '/^[0-3][0-9]\.[0-1][0-9]\.[0-9]\{4\}/{
         N
         / [0-9][0-9]*$/{
          s/\n/;/
          s/[ ][ ]*\([0-9][0-9]*\)$/;\1;/
          p
         }
        }' $1

Re: Нужна помащь по парсу файла

Добавлено: 2011-07-22 13:38:08
kpp
2 rmn
Небольшая придирка или моё ИМХО ;) , но все же, судя по всяческим рекомендациям, и исходя из здравой логики, лучше делать не:

Код: Выделить всё

cat file.txt | grep -v ^$ | grep -v DATA | grep -v TIP | grep -v "\-\-" | wc -l
, а

Код: Выделить всё

grep -v ^$ file.txt | grep -v DATA | grep -v TIP | grep -v "\-\-" | wc -l

Re: Нужна помащь по парсу файла

Добавлено: 2011-07-22 15:13:47
ruslanstep1
Всем большое спасибо за помощь