dscl . -readall /Users
输出类似这样的内容(仅是整个输出的一部分):
PrimaryGroupID: 20
RealName:
Johnny Smith
RecordName: johnny
RecordType: dsRecTypeStandard:Users
UniqueID: 501
UserShell: /bin/bash
我有这个命令:
dscl . -readall /Users UniqueID | awk '/^RecordName:/ {name=$2}; /^UniqueID: / {if ($2 > 500) print name}'
它基本上输出所有 UniqueID 高于 500 的 RecordName。
如果 UniqueID 大于 500,我还想打印 RealName、UserShell、RecordType、PrimaryGroupID 以及可能的任何其他类别,但我对 awk 的语法有些困难。
我该如何做这件事?
一些示例输出:
<primarygroupid>20</primarygroupid>
<realname>Johnny Smith</realname>
...
<uniqueid>501</uniqueid>
我可以快速访问的一种格式,用于读取并放入程序变量中。
答案1
OSX
不幸的是,我对该实用程序没有任何经验dscl
。不过我确实有一些awk
经验。我也快速阅读了dscl
手册页查看readall
选项:
Displays all the records of a given type. The output of readall is formatted in
the same way as read with a "-" on a line as a delimeter between records.
您可以更改处理记录的方式awk
。这将打印出 UniqueID 大于或等于 500 的记录:
awk -v RS="-" '{ for (i=1; i<=NF; i++) if ($i ~ /UniqueID:/ && $(i+1) >= 500) print $0 }'
您有预期的输出格式吗?