Ubuntu - Ver linhas de dados 10 por 10

Ubuntu - Ver linhas de dados 10 por 10

Preciso escrever um script para visualizar /etc/passwd 10 por 10 com números de páginas abaixo. Portanto, ele exibirá as próximas 10 linhas após pressionar um botão. Qual comando devo usar? Tentei verificar awk, head, tail, command, mas não tive sorte em encontrar uma solução.

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

Responder1

Adicione getline rc < "-"para cada 10ª linha. Para suprimir uma nova linha, mova o cursor uma linha para cima com 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 adicionar o número da página você pode 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

informação relacionada