显示用户名和uid

显示用户名和uid
cut -f 1,3 -d ':' --output-delimiter=' ' /etc/passwd

使用上面的代码我得到这个结果

root 0
bin 1
daemon 2
adm 3
lp 4
sync 5
shutdown 6
halt 7
mail 8
operator 11
games 12
ftp 14
nobody 99
systemd-network 192
dbus 81
polkitd 999
ntp 38
sshd 74
postfix 89
chrony 998
adilfanta 1000
miked 5001
mca 5002
mdrock 5003
finalexam 5004
mysql 27
apache 48

我想为每一行得到如下所示的结果

Name mca and uid  5002

答案1

awk除了提供的原始列提取之外,为格式化输出提供了更多的灵活性cut

awk -F : '{ printf "Name %s and uid %d\n", $1, $3 }' /etc/passwd

或者,支持可能使用目录服务的系统(这也适用于/etc/passwd提供passwd数据库的系统,但不适用于 macOS),

getent passwd |
awk -F : '{ printf "Name %s and uid %d\n", $1, $3 }'

awk代码打印出:每行的第一和第三分隔列,作为使用 格式化的文本字符串的一部分printf

相关内容