【发布时间】:2023-04-04 13:10:01
【问题描述】:
您好,我需要这样做:开发一个 AWK 程序,该程序读取 /etc/passwd 并以 GID name1 name2 形式打印具有相同 GID 的那些用户的名称。
我正在查看有关 stackoverflow 的帖子,试图开发解决方案:awk + How do I find duplicates in a column?
那里的解决方案可行,但不完整且格式不正确。
我在网上找到了这段代码,但无法运行:
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
该程序正常运行,并为我提供了一个包含正确数字 65534 和 7 的文件 output.txt。
然后我尝试编写 awk 程序来处理该文件,它看起来像这样:
BEGIN{
FS=":"
}
{a[$4]++}
END{
for {$1 in a[$4]}
{printf "%d %s", $4, $1}
}
这是行不通的。我觉得我真的很接近,但不能完全确定解决方案,任何帮助将不胜感激!提前致谢!
【问题讨论】:
标签: linux bash unix awk scripting