Mit grep uid überprüfen

J

Janine

Eroberer
Wie kann ich mit grep die grösste uid aus der passwd herausfinden?

:hilfe2:

Mfg Janine
 
Mit grep kommst Du wohl nicht weiter.

Aber z. B. so geht es:

Code:
cat /etc/passwd | cut -d : -f 3 | sort -n -r | head -n 1

cat: /etc/passwd ausgeben
cut: relevante Spalte ausschneiden
sort: Sortierung sicherstellen
head: Ausgabe auf 1. Zeile beschränken
 
Code:
awk -F: 'NR==1{print $3}' <(sort -n -r /etc/passwd)
oder
Code:
sort -n -r /etc/passwd | awk -F: 'NR==1{print $3}'

Das vermeidet 1. UUOC (Useless Use of Cat) und 2. die unnötigen Pipes die Subshells forken.
 
UUOC, wie gut ist das denn :D

den kannt ich auch noch nich ;)
 
cat /etc/passwd | cut -d : -f 3 | sort -n -r | head -n 1

wie kann ich das noch erweitern das er mir die zahl +1 erhöht und als $.... speichert damit ich mit dem $.... weiter arbeiten kann?
 
Code:
awk -F: 'NR==1{print $3}' <(sort -n -r /etc/passwd)
oder
Code:
sort -n -r /etc/passwd | awk -F: 'NR==1{print $3}'

Das vermeidet 1. UUOC (Useless Use of Cat) und 2. die unnötigen Pipes die Subshells forken.
*Ähm*
Damit sortierst du doch erst die /etc/passwd alphabetisch nach Usernamen und filterst dann die UID heraus ...? :think:
Damit würdest du voraussetzen, dass der aphabetisch "letzte" User auch die höchste UID hat ...


Also müsste man erst die UIDs herausfiltern und dann sortieren
Code:
awk -F":" '{ print $3 | "sort -n" }' < /etc/passwd | tail -n1
... wobei sich da wieder die Pipe (und damit die Subshell) nicht vermeiden läst ...

... oder man macht das ganze komplett in awk:
Code:
awk -F":" '{ max = (max < $3 ? $3 : max) } END { printf "%d\n",max }' < /etc/passwd
 

Ähnliche Themen

Frage zu Bash Script mit Grep Ausgabe

Frage zu adduser bei bestehendem /home

Mehrere Dateien umwandel?

RPM Paketbau - %pre Probleme

substitution unter sed

Zurück
Oben