![Ubuntu - Просмотр данных Строки 10 на 10](https://rvso.com/image/154448/Ubuntu%20-%20%D0%9F%D1%80%D0%BE%D1%81%D0%BC%D0%BE%D1%82%D1%80%20%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85%20%D0%A1%D1%82%D1%80%D0%BE%D0%BA%D0%B8%2010%20%D0%BD%D0%B0%2010%20.png)
Мне нужно написать скрипт для просмотра /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