команда awk - определить размер слова - PullRequest
0 голосов
/ 03 октября 2018

Я изучаю AWK и пытаюсь подсчитать количество сеансов к определенному месту назначения.

Используя эту команду:

awk '{print $9}' traffic-log-cust.txt | sort | uniq -c

, и я получаю вывод ниже.

#awk '{print $9}' traffic-log-cust.txt | sort | uniq -c
      1 
      1 10.10.17.72/38403->157.55.235.140/40046
      1 10.10.17.72/38403->157.55.235.146/40006
      1 10.10.17.72/38403->157.55.235.148/40039
      1 10.10.17.72/38403->157.55.235.159/40019
      1 10.10.17.72/38403->157.55.235.160/40019
      1 10.10.17.72/38403->157.55.56.156/40046
      1 10.10.17.72/38403->157.55.56.174/40018
      1 10.10.17.72/38403->64.4.23.156/40017
      1 10.10.17.72/38403->64.4.23.164/40011
      1 10.10.17.72/38403->64.4.23.166/40053
      1 10.10.17.72/38403->65.55.223.16/40003
      1 10.10.17.72/38403->65.55.223.44/40002
#

и я считаю, что в слове 9 нет пробела, а также содержится IP-адрес назначения.

Я хотел бы знать, как я могу рассчитывать сеансы на основе IP-адресов назначения.

Заранее спасибо.

1 Ответ

0 голосов
/ 04 октября 2018

Я собираюсь догадаться, что у вас есть проблемы, решающие, насколько велико каждое поле.(Ваш вопрос неясен.) Я бы сказал, что вам не нужно;просто разбейте каждую строку на 2 поля и разберитесь со вторым полем.

С помощью awk вы указываете, что является разделителем, с опцией -F, и поскольку знак «больше» (>) имеет смысл во многих оболочкахВы должны как-то избежать этого.В Linux вы можете использовать обратную косую черту для этого.

Поскольку вы используете awk, вам не нужны sort и uniq;можно использовать ассоциативные массивы.

Предполагая, что вы НЕ игнорируете порты:

awk -F\> '{dest_ips[$2]++} 
           END {
             for (ip in dest_ips) {
               printf "%s: %d\n", ip, dest_ips[ip]
             }
          }' traffic-log-cust.txt

Если вы игнорируете порты, сначала нужно проанализировать это второе поле (возможно, используя * 1015).*).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...