将不同命令的输出并排加入列中

时间:2017-01-24 04:54:06

标签: bash shell unix

我有多个命令,我想在列中打印每个命令的输出。

这是我的命令和输出:

echo "Batch 1 list" >> out.txt
ssh -T mqm@mqprb01 "echo 'DIS CLUSQMGR(*)'|runmqsc" |awk -F'[()]' '{print $2}' >> out.txt
echo "===============================================================">> out.txt
echo "Batch 2 list" >> out.txt
ssh -T mqm@mqprn01 "echo 'DIS CLUSQMGR(*)'|runmqsc" |awk -F'[()]' '{print $2}' >> out.txt
echo "===============================================================">> out.txt
echo "Batch 3 list">> out.txt
ssh -T mqm@mqprl01 "echo 'DIS CLUSQMGR(*)'|runmqsc" | awk -F'[()]' '{print $2}' >> out.txt
echo "===============================================================">> out.txt

这是输出:

Batch list
F111
F211
F311
F411
F511
F9P1
F9P4
F9P6
F9P7
FA11

===============================================================
Batch 2 list
A111
B211
V311
F411
B511
B9P1
NA11
FB11
CD11

===============================================================
 batch 2 list
C111
C211
R311
Y411
E511
B9P1
EA11
AB11
ND11

我希望看到这种格式的输出:

Batch 1 list(count) Batch 2 list(count)  Batch 3 list(count)
F111                    A111               C111
F211                    B211               C211
F311                    V311               R311
F411                    F411               Y411
F511                    B511               E511
F9P1                    B9P1               B9P1
F9P4                    NA11               EA11
F9P6                    FB11               AB11
F9P7                    CD11               ND11
FA11

Count是该列中的条目数。

2 个答案:

答案 0 :(得分:2)

将结果提取到单独的文件中,然后使用paste命令横向定制它们:

paste out1 out2 out3 > out.formatted

这是您将获得的输出:

Batch list  Batch 2 list    batch 2 list
F111    A111    C111
F211    B211    C211
F311    V311    R311
F411    F411    Y411
F511    B511    E511
F9P1    B9P1    B9P1
F9P4    NA11    EA11
F9P6    FB11    AB11
F9P7    CD11    ND11
FA11

获得计数有点棘手。不要将标题放在开头,而是在粘贴时添加它们,如下所示:

export count1=$(grep -c '^' out1) # need to export so that it is available to `cat`s below which run in subshells
export count2=$(grep -c '^' out2)
export count3=$(grep -c '^' out3)
paste <(cat - <<< "Batch list ($count1)" out1) <(cat - <<< "Batch list ($count2)" out2) <(cat - <<< "Batch list ($count3)" out3) > out.formatted
  • cat - - &gt;确保cat从stdin读取来自此处的字符串<<<以及文件

答案 1 :(得分:0)

最好在separet文件中获取每个输出并将它们合并为1

paste out1.log out2.log out3.log|expand --tabs=1>final_out.log