Ubuntu - Ver líneas de datos 10 por 10

Ubuntu - Ver líneas de datos 10 por 10

Necesito escribir un script para ver /etc/passwd 10 por 10 con los números de página debajo. Entonces mostrará las siguientes 10 líneas después de presionar un botón. ¿Qué comando debo usar? Intenté verificar awk, head, tail, comando pero no tuve suerte para encontrar una solución.

#!/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 

Respuesta1

Sume getline rc < "-"por cada décima línea. Para suprimir una nueva línea, mueva el cursor una línea hacia arriba con 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

Para agregar el número de página, puede usar:

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

información relacionada