簡體   English   中英

Bash 將長列表打印為列

[英]Bash print long list as columns

我有一個名為 nameVar 的數組,如下所示: 'server1' 'server2' 'server3' 'server4' 使用以下代碼:

echo "Which F5 to connect:"
for f5 in ${!nameVar[*]}
do
    printf "%4d: %s\n" $f5 ${nameVar[$f5]}
done

我收到一個編號列表,其中包含數組中的每個項目。

0: server1
1: server2
2: server3

我的問題是,如果我的數組有很多項目,output 太長,我必須向上滾動才能看到開頭。

如果我使用 \t 而不是 \n,則 output 由於長度不同(例如,有些名稱很長,如 server1-eastus-2021,有些名稱較短,如 server002)。

我怎樣才能得到漂亮的柱狀 output?


| 0: server1     |   3: server1-eastus-2021  
| 1: server2     |   4: server5              
| 2: server3     |   5: server6              

假設您的列表是單列,您可以只 pipe 到less

但是,我相信您所追求的pretty外觀可以使用pr獲得

DESCRIPTION
       Paginate or columnate FILE(s) for printing.

例如,如果您想要 2 或 3 列,您可以使用

$ pr -2t input_file #2 columns
$ pr -3T input_file #3 columns

等等。

$ echo "0: server1
1: server2
2: server3
3: server4
4: server5
5: server6" | pr -2T
0: server1                          3: Serer4
1: server2                          4: server5
2: server3                          5: server6

或如 David C 所述。 Rankin 和更多像您預期的 output,您可以 go 以獲得更漂亮的外觀。

$ .... | pr -2 -S" |   " -T
0: server1                        |       3: server4
1: server2                        |       4: server5
2: server3                        |       5: server6

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM