Ubuntu - Datenzeilen 10 x 10 anzeigen

Ubuntu - Datenzeilen 10 x 10 anzeigen

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

verwandte Informationen