Категории

четверг, 28 августа 2014 г.

Инвертируем поведение tail и head

Очень короткая заметка про tail и head. Как известно head и tail работают с началом и концом документа соответственно. Но бывает необходимость получить все строки, кроме, например первых трех, или наоборот кроме последних 3.
Приведу пример работы, вот простой файл:
cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS"
Получим из него все строки, кроме первой:
user@Ubuntu:~$ tail -n+2 /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS"
А теперь все кроме последних двух:
user@Ubuntu:~$ head -n+3 /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
И живой пример использования, нужно получить из netstat количество соединений сгруппированных по типу, исключив первые 2 строки заголовка:
user@Ubuntu:~$ netstat -ant | tail -n +3 | awk '{print $6}' | sort | uniq -c
      1 CLOSE_WAIT
     34 ESTABLISHED
      8 LISTEN
      2 SYN_SENT
Или для удобства в цикле:
user@Ubuntu:~$ while true; do netstat -ant | tail -n +3 | awk '{print $6}' | sort | uniq -c; echo -----------; sleep 1; done
      1 CLOSE_WAIT
     32 ESTABLISHED
      8 LISTEN
-----------
      1 CLOSE_WAIT
     32 ESTABLISHED
      8 LISTEN
-----------
^C
Остановить цикл можно клавишами Ctrl+c.

Комментариев нет:

Отправить комментарий