多行bash变量

时间:2016-08-16 08:27:53

标签: bash shell printf

我正在尝试打印一个漂亮漂亮的表,显示少数(3)变量的值。其中一个变量包含多行作为其内容。这扭曲了生成的表的格式。

首先尝试使用echo -e,但没有尝试利用printf,但仍然无法更正格式。任何帮助表示赞赏。谢谢。

var1=10
var2=20
var3=$(cat temp.db) #This is causing issue.

printf "%-10s%-10s%-30s\n" "var1" "var2" "var3"
printf "%-10s%-10s%-30s\n" "$var1" "$var2" "$var3"

其中temp.db的结构如下:

cat temp.db

2 user1
3 user2
5 user3
6 user7
9 user9

期望的输出:

var1      var2    var3
 10       20      2 user1
                  3 user2
                  5 user3
                  6 user7
                  9 user9

我目前得到的是:

var1      var2      var3
10        20        2 user1
3 user2
5 user3
6 user7
9 user9

1 个答案:

答案 0 :(得分:3)

这听起来像是awk - man (a)的工作。以下成绩单显示了它的实际效果:

yup> awk '
...>    BEGIN {
...>        v1 = 10; v2 = 20; f="%-10s %-10s %-30s\n";
...>        printf f, "var1", "var2", "var3";
...>    }
...>    {
...>        printf f, v1, v2, $0;
...>        v1 = ""; v2 = "";
...>    }' inputFile

var1       var2       var3
10         20         2 user1
                      3 user2
                      5 user3
                      6 user7
                      9 user9

忽略...>件事,他们是我的继续提示PS2所以我可以很好地排列多行语句(一些;字符也是多余的但是我这只是为了保持一致性。)

代码只是设置var1/2的格式字符串和初始值,然后在BEGIN块中打印标题。然后,对于每个输入行,它会输出所需的列,并根据需要进行格式化。

(a)想想超人,但是方形下颚较少,眼镜较厚,也可能是口袋保护装置: - )