Очень короткая заметка про tail
и head
. Как известно head
и tail
работают с 10 первыми или последними строками соответственно.
Но бывает необходимость получить все строки, кроме, например первых трех, или наоборот кроме последних 3.
Приведу пример работы, вот простой файл:
user@Ubuntu:~$ 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"
А теперь все кроме последних двух:
bash
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.
Comments
comments powered by Disqus