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

Исходное сообщение
"Нужно помощь в парсинге файлов"

Отправлено universite , 28-Авг-14 03:00 
Есть куча файлов с содержимым (строк много):
val1=3
val2=1
val3=15
val4=12
val5=24
val6=32
val7=test2
val8=test4
...

Нужно сделать кучу сравнений с переменными.
Непонятно как сделать, чтоб в awk переменные были $1=3, $2=1 ...

приходится делать:

val1=`grep val1 file | awk -F= '{ print $2;}'
val2=`grep val2 file | awk -F= '{ print $2;}'
...

или

val=`cat file`
val1=`echo $val | awk '{ print $1;}' | awk -F= '{ print $2;}'
val2=`echo $val | awk '{ print $2;}' | awk -F= '{ print $2;}'
...

Подскажите направление для ускорения парсинга...


Содержание

Сообщения в этом обсуждении
"Нужно помощь в парсинге файлов"
Отправлено pavlinux , 28-Авг-14 05:16 
$ awk 'BEGIN {FS="=";} NR==1 {print $2};' test;


"Нужно помощь в парсинге файлов"
Отправлено universite , 28-Авг-14 16:27 
> $ awk 'BEGIN {FS="=";} NR==1 {print $2};' test;

Не работает.


awk -F= '{ print $2;}' file

Выдает вторую колонку при разделителе =


"Нужно помощь в парсинге файлов"
Отправлено Andrey Mitrofanov , 28-Авг-14 09:41 
> Подскажите направление для ускорения парсинга...

Ускорение "парсинга" - один проход awk-ом и логика в нём.

<file.txt awk -F= '{ar[$1]=$2}END{if(ar["var1"]==ar["var2"])print"Да!"}'


"Нужно помощь в парсинге файлов"
Отправлено universite , 28-Авг-14 16:25 
>> Подскажите направление для ускорения парсинга...
> Ускорение "парсинга" - один проход awk-ом и логика в нём.
> <file.txt awk -F= '{ar[$1]=$2}END{if(ar["var1"]==ar["var2"])print"Да!"}'

Благодарю.



"Нужно помощь в парсинге файлов"
Отправлено Аноним , 28-Авг-14 18:29 
>> <file.txt awk -F= '{ar[$1]=$2}END{if(ar["var1"]==ar["var2"])print"Да!"}'
> Благодарю.

Смотри не насупи на спец эффект при:
var1=TRUE
var2=TRUE
...
var1=FALSE

В остальном - Андрейка очень дал хороший совет. Молодец :)