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
。