多行bash变量的列格式

多行bash变量的列格式,bash,shell,printf,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" "$var

我试图打印一个漂亮的表格,显示几个(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
期望输出: 我目前得到的是:
这听起来像是awk的工作。下面的文字记录显示了它的作用:

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) 想想超人吧,但他没有那么方下巴,戴着更古怪的眼镜,可能还带着一个口袋护具:-)

这听起来像是awk的工作。下面的文字记录显示了它的作用:

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) 想想超人吧,但他没有那么方下巴,戴着更古怪的眼镜,可能还带着口袋保护器:——)

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