首页 > 解决方案 > 将多个变量输出转换为bash中的表

问题描述

我有 3 个变量$commonName$expiryDate$DaysRemInUnixEpoch。每个变量有 3 行如下输出。我想将所有 3 个变量的输出显示到 3 个不同的列中。我尝试使用 printf 寻找解决方案,但没有运气。任何人都可以请告知他们过去是否使用 printf 以及如何做到这一点?任何帮助都感激不尽。

下面是在一列中一起输出的 3 个变量。我想分成 3 列,每列有 3 行。

bash-4.1$ echo -e  "$commonName\n$expiryDate\n$daysRemInUnixEpoch" 
mycertificate_mycert.mycomp.net
PSIN0P551
ROOTROOTCA
Feb 6 2022 11:57:32 GMT
Jan 9 2023 18:51:25 GMT
Mar 12 2035 18:24:54 GMT
682
1020
5465
bash-4.1$

我正在寻找的所需输出如下所示

mycertificate_mycert.mycomp.net Feb 6 2022 11:57:32 GMT 682 PSIN0P551 Jan 9 2023 18:51:25 GMT 1020 ROOTROOTCA Mar 12 2035 18:24:54 GMT 5465

标签: bash

解决方案


使用 bash(进程替换),粘贴和列:

paste -d ';' <(echo "$commonName") <(echo "$expiryDate") <(echo "$daysRemInUnixEpoch") | column -s ';' -t

输出:

mycertificate_mycert.mycomp.net 2022 年 2 月 6 日 11:57:32 GMT 682
PSIN0P551 2023 年 1 月 9 日 18:51:25 GMT 1020
2035 年 3 月 12 日 18:24:54 GMT 5465

我假设您的变量不包含;.


见:man pasteman column


推荐阅读