Скрипт в командной строке Linux, Solmir, 28-Июл-14, 13:10 [смотреть все]Всем привет. Недавно начал осваивать работу в командной строке 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-м тэгом, а потом как-то записать все элементы в массив и сравнить их. Надеюсь на ваши советы.
|
- Скрипт в командной строке Linux, Andrey Mitrofanov, 13:28 , 28-Июл-14 (1) +1
> Нужно посчитать в логах количество строк, которые удовлетворяли бы таким значениям тэгов. > a5=`grep 1057=Y _1 *путь к файлам* |grep -c 54=2 |grep -c 150=F|` > Основная проблема в сравнении значений 14-го и 32-го тэгов.Очень заинтересовало Ваше сообщение. Расскажите, пожалуйста, кто такие "тагши в логах" и какая, новая для меня, технология их создаёт? Уж не journald ли? И Вам спасибо.
- Скрипт в командной строке Linux, Solmir, 13:39 , 28-Июл-14 (2)
>> Нужно посчитать в логах количество строк, которые удовлетворяли бы таким значениям тэгов. >> a5=`grep 1057=Y _1 *путь к файлам* |grep -c 54=2 |grep -c 150=F|` >> Основная проблема в сравнении значений 14-го и 32-го тэгов. > Очень заинтересовало Ваше сообщение. Расскажите, пожалуйста, кто такие "тагши в логах" > и какая, новая для меня, технология их создаёт? Уж не journald > ли? > И Вам спасибо.Что вы имели ввиду под выражением "тагши в логах"?
- Скрипт в командной строке Linux, Andrey Mitrofanov, 13:52 , 28-Июл-14 (3) +1
>>> Нужно посчитать в логах количество строк, которые удовлетворяли бы таким значениям тэгов. >>> a5=`grep 1057=Y _1 *путь к файлам* |grep -c 54=2 |grep -c 150=F|` >>> Основная проблема в сравнении значений 14-го и 32-го тэгов. >> Очень заинтересовало Ваше сообщение. Расскажите, пожалуйста, кто такие "тагши в логах" >> и какая, новая для меня, технология их создаёт? Уж не journald >> ли? >> И Вам спасибо. > Что вы имели ввиду под выражением "тагши в логах"?Извините, опечатался. "Таги" конечно. Строки в логах знаю, а кто такие "таги в логах" - нет. Даже гугль не помогает, duckduckgo с яндексом пишут про блоги. Неужели их можно grep-ать?
- Скрипт в командной строке Linux, Solmir, 14:20 , 28-Июл-14 (4) –1
>[оверквотинг удален] >>>> 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
- Скрипт в командной строке Linux, Andrey Mitrofanov, 11:58 , 29-Июл-14 (5)
> Нужно посчитать в логах количество строк, которые удовлетворяли бы таким значениям тэгов. > (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 $ _
|