[英]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.