首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并排输出两个函数的格式

并排输出两个函数的格式
EN

Stack Overflow用户
提问于 2016-06-22 11:17:27
回答 1查看 83关注 0票数 0

我想并排格式化两个函数的输出。

下面是我目前正在做的例子,包括我在底部的失败尝试。

代码语言:javascript
复制
#!/bin/bash

status_awsomeproject1() {
    echo "\e[0;33m\n################ Status awsomeproject1 ################\e[0;37m"
    cd /home/joaoc/Projects/awsomeproject1
    git status
    cd vendor/libs
    echo "\e[0;33m\n################ Status awsomeproject1-> lib-1 ################\e[0;37m"
    git -C lib-1 status
    echo "\e[0;33m\n################ Status awsomeproject1-> lib-2 ################\e[0;37m"
    git -C lib-2 status
    echo "\e[0;33m\n################ Status awsomeproject1-> lib-3 ################\e[0;37m"
    git -C lib-3 status
}

status_awsomeproject2() {
    echo "\e[0;33m\n################ Status awsomeproject2 ################\e[0;37m"
    cd /home/joaoc/Projects/awsomeproject2
    git status
    cd vendor/libs
    echo "\e[0;33m\n################ Status awsomeproject2-> lib-1 ################\e[0;37m"
    git -C lib-1 status
    echo "\e[0;33m\n################ Status awsomeproject2-> lib-2 ################\e[0;37m"
    git -C lib-2 status
    echo "\e[0;33m\n################ Status awsomeproject2-> lib-3 ################\e[0;37m"
    git -C lib-3 status
}


echo "$(status_awsomeproject1) || $(status_psp)" | column -t

only ()命令执行我所需的任务,但它只作为一个列执行。

如何实现所需的输出?

谢谢

编辑,以便提供一个最小的工作示例:

代码语言:javascript
复制
#!/bin/bash

string_output1() {
    echo "################ Example long multi-line string ################\n\n"
    echo "################ Example long multi-line string ################\n\n"
    echo "################ Example long multi-line string ################\n\n"
    echo "################ Example long multi-line string ################\n\n"
    echo "################ Example long multi-line string ################\n\n"
}

string_output2() {
    echo "################ Example long multi-line string ################\n\n"
    echo "################ Example long multi-line string ################\n\n"
    echo "################ Example long multi-line string ################\n\n"
    echo "################ Example long multi-line string ################\n\n"
    echo "################ Example long multi-line string ################\n\n"
    echo "################ Example long multi-line string ################\n\n"
}


echo "$(string_output1) || $(string_output2)" | column -t
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-22 11:25:49

如果可以使用临时文件,请执行以下操作:

代码语言:javascript
复制
status_awsomeproject1>tmp1
status_awsomeproject2>tmp2
paste tmp1 tmp2
rm tmp1 tmp2 # Remove the temporary files after use

如果您的shell支持[过程替代],则可以将上面的内容简化为:

代码语言:javascript
复制
paste -d^ <(status_awsomeproject1) <(status_awsomeproject2) 

编辑

您可以将结果传送到awk以进行对齐,如下所示:

代码语言:javascript
复制
paste  -d^ <(status_awsomeproject1) <(status_awsomeproject2) | \
awk 'BEGIN{FS="\^"}{printf "%-10s %s\n",$1,$2}' 2>/dev/null

首先,您必须找到一个合适的分隔符,该分隔符在函数的输出中很少/没有机会出现。我选择了^。然后,使用这个分隔符作为awk字段分隔符,并使用awk printf宽度来控制宽度。

注:

我已经将awk printf宽度设置为10,但是您需要根据函数输出的预期长度来更改它。尝试和错误,但nbd虽然。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37966466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档