Как мне распечатать все имена пользователей с одинаковыми UID в `/ etc / passwd` с помощью awk?

Как напечатать все имена пользователей с одинаковыми UID в /etc/passwd?

Это моя команда

$ awk -F: '{print $3, $1}' us.txt | sort   
0 daemon
0 pepe
0 root
2 bin
2 jacinto
3 paco
-1
задан 12 May 2015 в 22:05

2 ответа

Сохраните счет для каждого UID, и сохраните UIDs и затем распечатайте те записи, UIDs которых появились несколько раз:

awk -F: '{count[$3]++; users[$3] = $1 " " users[$3]} END {for (i in count) {if (count[i] > 1) { print users[i] } } }' /etc/passwd
0
ответ дан 13 May 2015 в 08:05
  • 1
    Получил ту же проблему с 16,04 хостами на Win10, просто обновленном к VB 5.1.20. Первоначально гость работал, но был неспособен пойти онлайн, я изменил настройки Adapter 1 к Адаптеру Сетевого моста (был NAT), и сбросьте MAC в придачу. Это хорошо работало. Только для тестирования я сбросил сетевой адаптер назад к NAT, и затем я получил ту же черную экранную проблему, задержав его к Соединенному мостом, это работает отлично. – runlevel0 26 April 2017 в 01:42

Можно циклично выполниться через файл дважды:

awk -F: 'FNR==NR{count[$3]++; next}
         count[$3]>1 && !seen[$1] {
               print $1, $3, "("count[$3]" times)"; seen[$1]++
        }' /etc/passwd{,}
  • В первый раз, который сохранит счетчик того, сколько раз появляется каждый UID.
  • Во второй раз для печати всех тех значений, кто был отмечен для появления несколько раз.

Как один лайнер:

awk -F: 'FNR==NR{count[$3]++; next} count[$3]>1 && !seen[$1] {print $1, $3, "("count[$3]" times)"; seen[$1]++}' /etc/passwd{,}

демонстрационный вывод А был бы:

root 0 (2 times)
0
ответ дан 13 May 2015 в 08:05
  • 1
    и Вы удаляли/переустанавливали более новое ядро, чтобы видеть, установлен ли надлежащий криптомодуль также? это - версия ядра, которую Вы выполняете? (установили и пытаются работать?) Я сделал обновления от 4,4 до 48 без и проблемы с помощью зашифрованного дома/диска. – 0x0C4 21 August 2016 в 22:05

Другие вопросы по тегам:

Похожие вопросы: