Ubuntu - Просмотр данных Строки 10 на 10

Ubuntu - Просмотр данных Строки 10 на 10

Мне нужно написать скрипт для просмотра /etc/passwd 10 на 10 с номерами страниц под ним. Так он будет показывать следующие 10 строк после нажатия кнопки. Какую команду мне использовать? Пытался проверить awk, head, tail, command, но не смог найти решение.

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

решение1

Добавить getline rc < "-"для каждой 10-й строки. Чтобы скрыть новую строку, переместите курсор на одну строку вверх с помощью 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

Чтобы добавить номер страницы, вы можете использовать:

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

Связанный контент