Всем привет.
Недавно начал осваивать работу в командной строке Linux.
Помогите, пожалуйста, с такой задачей.
Нужно посчитать в логах количество строк, которые удовлетворяли бы таким значениям тэгов.
(1057=Y & 54=1 & 150=F & (value of tag14)=(value of tag 32))
Всё, кроме последнего условия получается считать с помощью grep.
a5=`grep 1057=Y _1 *путь к файлам* |grep -c 54=2 |grep -c 150=F|`
Основная проблема в сравнении значений 14-го и 32-го тэгов.
Как это сделать?
У меня лишь получилось вырезать из каждой записи кусок со значением 14-го тэга с помощью команд cat и awk.
Подумал, что получится сделать то же самое с 32-м тэгом, а потом как-то записать все элементы в массив и сравнить их.
Надеюсь на ваши советы.
> Нужно посчитать в логах количество строк, которые удовлетворяли бы таким значениям тэгов.
> a5=`grep 1057=Y _1 *путь к файлам* |grep -c 54=2 |grep -c 150=F|`
> Основная проблема в сравнении значений 14-го и 32-го тэгов.Очень заинтересовало Ваше сообщение. Расскажите, пожалуйста, кто такие "тагши в логах" и какая, новая для меня, технология их создаёт? Уж не journald ли?
И Вам спасибо.
>> Нужно посчитать в логах количество строк, которые удовлетворяли бы таким значениям тэгов.
>> a5=`grep 1057=Y _1 *путь к файлам* |grep -c 54=2 |grep -c 150=F|`
>> Основная проблема в сравнении значений 14-го и 32-го тэгов.
> Очень заинтересовало Ваше сообщение. Расскажите, пожалуйста, кто такие "тагши в логах"
> и какая, новая для меня, технология их создаёт? Уж не journald
> ли?
> И Вам спасибо.Что вы имели ввиду под выражением "тагши в логах"?
>>> Нужно посчитать в логах количество строк, которые удовлетворяли бы таким значениям тэгов.
>>> a5=`grep 1057=Y _1 *путь к файлам* |grep -c 54=2 |grep -c 150=F|`
>>> Основная проблема в сравнении значений 14-го и 32-го тэгов.
>> Очень заинтересовало Ваше сообщение. Расскажите, пожалуйста, кто такие "тагши в логах"
>> и какая, новая для меня, технология их создаёт? Уж не journald
>> ли?
>> И Вам спасибо.
> Что вы имели ввиду под выражением "тагши в логах"?Извините, опечатался. "Таги" конечно. Строки в логах знаю, а кто такие "таги в логах" - нет. Даже гугль не помогает, duckduckgo с яндексом пишут про блоги. Неужели их можно grep-ать?
>[оверквотинг удален]
>>>> a5=`grep 1057=Y _1 *путь к файлам* |grep -c 54=2 |grep -c 150=F|`
>>>> Основная проблема в сравнении значений 14-го и 32-го тэгов.
>>> Очень заинтересовало Ваше сообщение. Расскажите, пожалуйста, кто такие "тагши в логах"
>>> и какая, новая для меня, технология их создаёт? Уж не journald
>>> ли?
>>> И Вам спасибо.
>> Что вы имели ввиду под выражением "тагши в логах"?
> Извините, опечатался. "Таги" конечно. Строки в логах знаю, а кто такие "таги
> в логах" - нет. Даже гугль не помогает, duckduckgo с яндексом
> пишут про блоги. Неужели их можно grep-ать?во всяком случае grep-ать получалось
1175:O:N 20140211-06:51:33:626 : 8:FIXT.1.1 9=390 35=8 49=PARFX 56=c3dc34=1175 52=20140211-06:51:33.626 37=1402110000000000187 11=49uEcD400000639 41=49uEcD400000633 453=1 448=client 447=B 452=17 17=1402110101000000026 150=F 39=2 64=20140213 55=US 54=2 38=26000000 40=2 423=3 44=477.24 59=1 32=17000000 31=477.24 336=3 151=0 14=26000000 6=482.698846 60=20140211-06:51:33.635 381=12550170000 1057=N 8780=user1 10=041 448
> Нужно посчитать в логах количество строк, которые удовлетворяли бы таким значениям тэгов.
> (1057=Y & 54=1 & 150=F & (value of tag14)=(value of tag 32))
> Всё, кроме последнего условия получается считать с помощью grep.
> a5=`grep 1057=Y _1 *путь к файлам* |grep -c 54=2 |grep -c 150=F|`* Ошибка: -c нужен только в последнем grep.
Файлов у меня нет, замегни : чем-н. типа cat файл1 файл2 файл3* |
$ : |awk 'func value_of_tag(tg,aa){return match($0,"(^| )"tg"=([^ ]+)( |$)",aa)?aa[2]:""}value_of_tag(1057)=="Y"&&value_of_tag(54)==1&&value_of_tag(150)=="F"&&value_of_tag(14)==value_of_tag(32){cc++}END{print int(cc)}'
0
$ _