
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