简体   繁体   English

Bash 将长列表打印为列

[英]Bash print long list as columns

I have an array called nameVar, looks like this: 'server1' 'server2' 'server3' 'server4' With the following code:我有一个名为 nameVar 的数组,如下所示: 'server1' 'server2' 'server3' 'server4' 使用以下代码:

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

I receive a numbered list containig each item in the array.我收到一个编号列表,其中包含数组中的每个项目。

0: server1
1: server2
2: server3

My issue is, if my array has a lot of items, the output is too long, I have to scroll up to see the beginning.我的问题是,如果我的数组有很多项目,output 太长,我必须向上滚动才能看到开头。

If I use \t instead of \n, the output is not pretty, due to the various lengths (eg. some has long name like server1-eastus-2021, some has short like server002).如果我使用 \t 而不是 \n,则 output 由于长度不同(例如,有些名称很长,如 server1-eastus-2021,有些名称较短,如 server002)。

How can I get pretty, column-like output?我怎样才能得到漂亮的柱状 output?


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

Assuming your list is a single column, you could just pipe through to less .假设您的列表是单列,您可以只 pipe 到less

However, I believe the pretty look you are after can be obtained using pr但是,我相信您所追求的pretty外观可以使用pr获得

DESCRIPTION
       Paginate or columnate FILE(s) for printing.

If you wanted 2 or 3 columns for example, you can use例如,如果您想要 2 或 3 列,您可以使用

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

And so on.等等。

$ 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

Or as noted by David C.或如 David C 所述。 Rankin and more like your expected output, you can go for an even prettier look. 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