![Ubuntu - Datenzeilen 10 x 10 anzeigen](https://rvso.com/image/154448/Ubuntu%20-%20Datenzeilen%2010%20x%2010%20anzeigen%20.png)
Ich muss ein Skript schreiben, um /etc/passwd 10 x 10 mit Seitenzahlen darunter anzuzeigen. So werden nach dem Drücken einer Taste die nächsten 10 Zeilen angezeigt. Welchen Befehl soll ich verwenden? Habe versucht, die Befehle awk, head, tail und andere zu überprüfen, aber keine Lösung gefunden.
#!/bin/bash
awk -F":" 'BEGIN { print "--------------------------------------------------"
printf "%-20s %-10s %-3s\n","USERNAME","GUID","DIRECTORY"
print "--------------------------------------------------"
}
NR==1, NR==10 {printf "%-20s %-10s %-3s\n", $1, $4, $7} ' /etc/passwd
Antwort1
Für jede 10. Zeile hinzufügen getline rc < "-"
. Um einen Zeilenumbruch zu unterdrücken, bewegen Sie den Cursor mit eine Zeile nach oben system("tput cuu1")
:
awk -F":" '
BEGIN { print "--------------------------------------------------"
printf "%-20s %-10s %-3s\n","USERNAME","GUID","DIRECTORY"
print "--------------------------------------------------" }
!(NR%10) { getline rc < "-"; system("tput cuu1") }
{ printf "%-20s %-10s %-3s\n", $1, $4, $7 }
' /etc/passwd
Zum Hinzufügen einer Seitenzahl können Sie Folgendes verwenden:
awk -F":" -v TNR=$(wc -l < /etc/passwd) '
BEGIN { NUM_PAGES=TNR/10+1
print "--------------------------------------------------"
printf "%-20s %-10s %-3s\n","USERNAME","GUID","DIRECTORY"
print "--------------------------------------------------" }
!(NR%10) { PAGE++
printf "--- Page %d of %d ---",PAGE,NUM_PAGES
getline rc < "-"; system("tput cuu1") }
{ printf "%-20s %-10s %-3s\n", $1, $4, $7 }
' /etc/passwd