![Ubuntu - 查看資料行 10 by 10](https://rvso.com/image/154448/Ubuntu%20-%20%E6%9F%A5%E7%9C%8B%E8%B3%87%E6%96%99%E8%A1%8C%2010%20by%2010%20.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 行新增一次。若要抑制換行符,請使用下列指令將遊標向上移動一行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