Что-то вроде этого должно работать:
awk -F";" '!seen[$1]++{print}END {for (i in seen) if (seen[i]>1) print i,"found :" seen[i] "times"}' file
Первая часть перед END не будет печатать дубликаты, эмулирующие uniq
. Это означает, что если запись будет найдена два или более раз, будет напечатана только первая запись.
Код в END будет печатать все записи, найденные более одного раза.
Если вам нужно напечатать чистые уникальные записи, эмулирующие uniq -u
, что означает, что если запись будет найдена два или более раз, она вообще не будет напечатана, вы можете использовать:
awk -F";" '{seen[$1]++}END {for (k=1;k<=2;k++) for (i in seen) if (seen[i]==1) {print i;delete seen[i];continue} else {print i,"found :" seen[i] "times"}}' file
Это будет повторять массив два раза. В первый раз будут напечатаны настоящие уникальные записи, а во второй раз будут напечатаны повторяющиеся записи.
Альтернатива:
awk -F";" '{seen[$1]++}END {for (i in seen) print "found :" seen[i] "times:",i}' file |sort
Будет напечатана каждая запись вместе с подсчетом (уникальные записи будут найдены один раз, неуникальные записи будут найдены более одного раза)
Перенумеруйте номера интерфейсов по MAC-адресу -. Похоже, что что-то пошло не так при назначении IP-адреса eno0, eno1 и eno2. Вы можете назначить другое имя для MAC-адреса -, поместив файл конфигурации, например /etc/udev/rules.d/10-persistent-net-rules
. Создайте строку для каждого интерфейса с желаемым MAC-адресом -и именем устройства (eno0
):
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:11:22:33:44:55", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eno*", NAME="eno0"