我想并排格式化两个函数的输出。
下面是我目前正在做的例子,包括我在底部的失败尝试。
#!/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 -tonly ()命令执行我所需的任务,但它只作为一个列执行。
如何实现所需的输出?
谢谢
编辑,以便提供一个最小的工作示例:
#!/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发布于 2016-06-22 11:25:49
如果可以使用临时文件,请执行以下操作:
status_awsomeproject1>tmp1
status_awsomeproject2>tmp2
paste tmp1 tmp2
rm tmp1 tmp2 # Remove the temporary files after use如果您的shell支持[过程替代],则可以将上面的内容简化为:
paste -d^ <(status_awsomeproject1) <(status_awsomeproject2) 编辑
您可以将结果传送到awk以进行对齐,如下所示:
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虽然。
https://stackoverflow.com/questions/37966466
复制相似问题