Привет, мне нужно сделать следующее: разработать программу на AWK, которая читает / etc / passwd и печатает имена тех пользователей, которые имеют одинаковый GID, в форме GID name1 name2.
Я просматривал этот поств stackoverflow пытается разработать решение: awk + Как найти дубликаты в столбце?
Решение там вроде работало, но было неполным и не было правильно отформатировано.
Я нашел этот код в Интернете, но не могу запустить его:
awk -F: '{print $4}' /etc/passwd | sort | uniq -d > output.txt
awk -F: {kount[$4]++}
END{for {$1 in kount[$4]}}
printf("%d %s", $4, $1) output.txt
Очевидно, что у него есть некоторые проблемы с синтаксисом при смешивании кода bash и awk. Я разделил его на две программы: скрипт bash и скрипт awk. Bash один работает правильно, он содержит:
awk -F: '{print $4}' /etc/passwd | sort | uniq -d > output.txt
Эта программа работает правильно и дает мне файл output.txt, который содержит номера 65534 и 7. Это правильно.
Затем я попытался написатьпрограмма awk для обработки этого файла, и она выглядит так:
BEGIN{
FS=":"
}
{a[$4]++}
END{
for {$1 in a[$4]}
{printf "%d %s", $4, $1}
}
, и это не работает. Я чувствую, что я действительно близко, но не могу найти решение, любая помощь будет высоко ценится! Заранее спасибо!