![Ubuntu - Ver linhas de dados 10 por 10](https://rvso.com/image/154448/Ubuntu%20-%20Ver%20linhas%20de%20dados%2010%20por%2010%20.png)
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