![Ubuntu - データ行を10x10として表示[閉じる]](https://linux33.com/image/154448/Ubuntu%20-%20%E3%83%87%E3%83%BC%E3%82%BF%E8%A1%8C%E3%82%9210x10%E3%81%A8%E3%81%97%E3%81%A6%E8%A1%A8%E7%A4%BA%5B%E9%96%89%E3%81%98%E3%82%8B%5D.png)
/etc/passwd 10 x 10のページ番号を表示するには、スクリプトを作成する必要があります。したがって、ボタンを押すと次の10行が表示されます。どのコマンドを使用する必要がありますか? awk、head、tail、コマンドを確認しましたが、解決策が見つかりませんでした。
#!/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行目ごとに追加されます。改行を抑制するには、次のコマンドを使用してカーソルを1行上に移動します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