Вот один из способов сохранить заголовок вверху: перенаправить файл и из потока использовать первую строку, а затем дать оставшиеся строки для сортировки.
{ IFS= read -r header; echo "$header"; sort -V; } < /proc/net/arp
GNU sort -V
отлично подходит для сортировки IP-адресов. К сожалению, он бросает все строки с начальными буквами (в отличие от цифр) в нижней части стопки. Есть ли способ обойти это?
Примечание:
• 192.168.0.103 отсутствует, потому что это локальный хост.
• MAC / HW адреса были изменены.
user@host:~$ cat /proc/net/arp
IP address HW type Flags HW address Mask Device 192.168.0.106 0x1 0x2 00:00:00:00:00:00 * wlan0 192.168.0.1 0x1 0x2 00:00:00:00:00:00 * wlan0 192.168.0.101 0x1 0x2 00:00:00:00:00:00 * wlan0 192.168.0.104 0x1 0x2 00:00:00:00:00:00 * wlan0 192.168.0.110 0x1 0x2 00:00:00:00:00:00 * wlan0 192.168.0.108 0x1 0x2 00:00:00:00:00:00 * wlan0 192.168.0.107 0x1 0x2 00:00:00:00:00:00 * wlan0 192.168.0.102 0x1 0x2 00:00:00:00:00:00 * wlan0 192.168.0.105 0x1 0x2 00:00:00:00:00:00 * wlan0 192.168.0.100 0x1 0x2 00:00:00:00:00:00 * wlan0 192.168.0.109 0x1 0x2 00:00:00:00:00:00 * wlan0
user@host:~$ sort -V /proc/net/arp
192.168.0.1 0x1 0x2 00:00:00:00:00:00 * wlan0 192.168.0.100 0x1 0x2 00:00:00:00:00:00 * wlan0 192.168.0.101 0x1 0x2 00:00:00:00:00:00 * wlan0 192.168.0.102 0x1 0x2 00:00:00:00:00:00 * wlan0 192.168.0.104 0x1 0x2 00:00:00:00:00:00 * wlan0 192.168.0.105 0x1 0x2 00:00:00:00:00:00 * wlan0 192.168.0.106 0x1 0x2 00:00:00:00:00:00 * wlan0 192.168.0.107 0x1 0x2 00:00:00:00:00:00 * wlan0 192.168.0.108 0x1 0x2 00:00:00:00:00:00 * wlan0 192.168.0.109 0x1 0x2 00:00:00:00:00:00 * wlan0 192.168.0.110 0x1 0x2 00:00:00:00:00:00 * wlan0 IP address HW type Flags HW address Mask Device
Вот один из способов сохранить заголовок вверху: перенаправить файл и из потока использовать первую строку, а затем дать оставшиеся строки для сортировки.
{ IFS= read -r header; echo "$header"; sort -V; } < /proc/net/arp