zubastiy |
|
Темы:
136
Сообщения:
548
Участник с: 18 сентября 2009
|
mehanoidотлично!zubastiyВообще в принципе необъявленные переменные в арифметических выражениях bash считает за ноль, но я привык всё же объявлять их все, чтобы не было путаницы for f in *AntiSpam.log; do let count+=$(grep -c URIBL_WS_SURBL $f);done && echo $count работает. мне как раз такой прием был нужен для скриптов одной строкой. |
red |
|
![]()
Темы:
30
Сообщения:
1517
Участник с: 31 августа 2011
|
не сочтите за некрофильство, просто решил изучить для себя такой полезный инструмент как awk и вот для практики порылся на форуме и отыскал подходящую задачкуzubastiy awk '/URIBL_WS_SURBL/ {a++} END {print a}' *AntiSpam.log + один проход (файлы обрабатываются единожды) + в одну строку + одна утилита |
Natrio |
|
Темы:
47
Сообщения:
4763
Участник с: 08 января 2011
|
red(выделено мной) Не могу не придраться к решению :) Вам только кажется, что вы использовали ОДНУ утилиту. На самом деле, вместо *AntiSpam.log ваша утилита получает развёрнутый список всех найденных в каталоге файлов по этой маске. Кто их находит и передаёт вашей утилите? Правильно, это делает bash, то есть в одну утилиту вы уже не уложились. К примеру, если бы вам требовалось запустить ту же команду, скажем, по ярлыку типа .desktop или юниту системд, вам бы пришлось там писать уже не одну команду, а запускать баш, и уже в нём выполнять команду, или сразу вписывать туда запуск скрипта. |
red |
|
![]()
Темы:
30
Сообщения:
1517
Участник с: 31 августа 2011
|
Natrio, я конечно в курсе что одни утилиты могут использовать и используют для своей работы другие утилиты, но в данном случае я подразумевал совершенно другое, ведь баш тоже не на пустом месте работает ну а как минимум и с помощью ядра и т.д. Я имел в виду что для решения поставленной задачи в данном окружении достаточно знание лишь одной утилиты. |
wlad_o |
|
Темы:
24
Сообщения:
184
Участник с: 02 января 2013
|
zubastiy Интересно, я сделал такой вариант и протестировал на нескольких файлах: for f in $1; do let count+=$(grep -c $2 $f);done && echo $count Ответ везде один и тот же - 5 |
wlad_o |
|
Темы:
24
Сообщения:
184
Участник с: 02 января 2013
|
wlad_o Поменял $f на $1 и заработало... |
killer1804 |
|
Темы:
54
Сообщения:
515
Участник с: 13 марта 2007
|
может так ? cat *AntiSpam.log* | grep URIBL_WS_SURBL | wc | awk '{print $1}' |