Table of Contents
Быстрые заметки по AWK
Отформатировать список адресов под "junos address-book"
Есть список ip-адресов и имен серверов:
$ cat TEST-SERV-LOW 192.168.1.1;server1 192.168.1.2;server2 192.168.1.3;server3 192.168.1.4;server4
Этот список надо быстро добавить через “load set relative” в address-book какого-нибудь устройства Juniper.
Делаем части конфигурации которые описывают address и address-set.
Имена серверов, политик безопасности, интерфейсов и т.д. я предпочитаю писать большими буквами, так удобнее читать конфигурацию.
Поменяем регистр у имен серверов.
$ tr [:lower:] [:upper:] <TEST-SERV-LOW> TEST-SERV-UP $ cat TEST-SERV-UP 192.168.1.1;SERVER1 192.168.1.2;SERVER2 192.168.1.3;SERVER3 192.168.1.4;SERVER4
С помощью awk печатаем команды set address и set address-set.
$ awk -F ';' '{ print "set address " $2 " " $1}' TEST-SERV-UP > server-set-load | awk -F ';' '{print "set address-set SET-SERVER-IP " $2}' TEST-SERV-UP >> server-set-load
В результате будет сформированный такой файл:
$ cat server-set-load set address SERVER1 192.168.1.1 set address SERVER2 192.168.1.2 set address SERVER3 192.168.1.3 set address SERVER4 192.168.1.4 set address-set SET-SERVER-IP SERVER1 set address-set SET-SERVER-IP SERVER2 set address-set SET-SERVER-IP SERVER3 set address-set SET-SERVER-IP SERVER4
Сумма чисел
Есть вот такой лог, файл test1:
[18/Nov/2015 21:18:03] {pktdrop} Last message repeated 4 times [18/Nov/2015 21:18:03] {pktdrop} Last message repeated 3 times [18/Nov/2015 21:18:03] {pktdrop} Last message repeated 13 times [18/Nov/2015 21:18:03] {pktdrop} Last message repeated 8 times [18/Nov/2015 21:18:03] {pktdrop} Last message repeated 3 times
Надо посчитать сколько раз повторялось сообщение.
В качестве разделителя используется пробел, числа которые надо сложить находятся в 7-й переменной.
Что бы вывести только эти числа даем команду:
[k@redpc ~]$ awk -F ' ' '{print $7}' test1 4 3 13 8 3
Суммируем эти числа:
[k@redpc ~]$ awk -F ' ' '{print $7}' test1 | awk '{ x += $0 } END {print x}' 31
Или можно сразу так:
[k@redpc ~]$ awk '{ x += $7 } END {print x}' test1 31