dscl . -readall /Users
wypisuje coś takiego (tylko część całego wyniku):
PrimaryGroupID: 20
RealName:
Johnny Smith
RecordName: johnny
RecordType: dsRecTypeStandard:Users
UniqueID: 501
UserShell: /bin/bash
Mam to polecenie:
dscl . -readall /Users UniqueID | awk '/^RecordName:/ {name=$2}; /^UniqueID: / {if ($2 > 500) print name}'
Zasadniczo wyprowadza wszystkie RecordName z UniqueID wyższym niż 500.
Chcę również wydrukować RealName, UserShell, RecordType, PrimaryGroupID i ewentualnie inną kategorię, jeśli UniqueID jest większy niż 500, ale mam pewne trudności ze składnią awk.
Jak miałbym to zrobić?
Niektóre próbki wyjściowe:
<primarygroupid>20</primarygroupid>
<realname>Johnny Smith</realname>
...
<uniqueid>501</uniqueid>
Format, do którego mogę szybko uzyskać dostęp w celu odczytu i umieszczenia w zmiennej dla programu.
awk
? OS X oferuje o wiele więcej narzędzi, które można wykorzystać.Odpowiedzi:
Niestety nie mam absolutnie żadnego doświadczenia
OSX
anidscl
użyteczności. Mam jednak pewneawk
doświadczenie. Przeczytałem też szybkodscl
stronę podręcznika użytkownika, patrząc nareadall
opcję:Możesz zmienić sposób
awk
traktowania rekordów. Spowoduje to wydrukowanie rekordów, w których UniqueID jest większy lub równy 500:Czy masz oczekiwany format wyjściowy?
źródło
dscl
danych wyjściowych). W odniesieniu do drugiego pytania; chociażawk
nie jest idealny do czytaniaxml
, można go użyć do napisania. Proszę edytować swoje pytanie zawierać sporą ilość próbek danych i oczekiwanej produkcji.