2013-03-19 2 views
-2

Кто-нибудь объяснить мне эту команду GrepGrep Команда Объяснение требуется

grep "click" /opt/tomcat/logs/localhost_access_log.2013-03-19.txt \ 
    | awk -F: '{if (($3 >= $hr) && ($4 >= $min)) print $0}' | wc -l 
+1

'grep' фильтрует строки в файле' .txt', которые содержат строку 'click'. Это действительно ваш вопрос? –

ответ

0

Есть три процесса в трубопроводе:

  1. grep находит все строки, содержащие слово «нажмите» из файла журнала и проходит их до awk.
  2. awk разрывает линию в полях с использованием разделителя :. Он печатает строку, если 3-е поле больше заданного hr, а 4-е поле больше указанного mins, хотя я не вижу, где вы устанавливаете $hr и $min.
  3. И наконец, wc подсчитывает строки, напечатанные awk.
+0

Большое спасибо. Очень хорошо объяснение. –

1

Grep находит все строки, содержащие строку символов click. Эти строки передаются в awk, который печатает только строки, в которых третьи поля больше или равны переменной оболочки $hr, а четвертое поле больше или равно переменной оболочки $min, где разделитель полей :(хотя эти оболочки переменная не будет расширяться из-за цитирования). wc -l затем используется для подсчета количества совпадений. В настоящее время трубопровод не отображает количество ожидаемых строк из-за того, что переменные оболочки не расширяются.

Ваш трубопровод может быть заменен (и фиксировано) с простой awk сценария:

$ hr=3 
$ min=23 
$ awk -F: -v h="$hr" -v m="$min" '/click/ && $3 >= h && $4 >= m{c++}END{print c}' 
+0

Это то, что мне нужно grep "click" localhost_access_log.2013-03-15.txt | awk '{if ($ 9! = 301) print $ 0}' | wc -l grep "imp" localhost_access_log.2013-03-15.txt | awk '{if ($ 9! = 301) print $ 0}' | wc -l Если число записей составляет более 10 за последние 15 минут, необходимо отправить электронное письмо. –

0

grep "click" /opt/tomcat/logs/localhost_access_log.2013-03-19.txt Поиск слова click в данном файле

awk -F: '{if (($3 >= $hr) && ($4 >= $min)) print $0}' Split каждый результат от Grep, используя секатор :. Если 3-й элемент больше $hr, а 4-й элемент больше $min, напечатайте 1-й элемент.

wc -l Подсчитайте все печатные элементы.

Похоже, что команда подсчитывает, сколько строк в файле журнала имеет отметку времени, превышающую указанный час и минуту.

Смежные вопросы