我正在尝试打印一个漂亮漂亮的表,显示少数(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
答案 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)想想超人,但是方形下颚较少,眼镜较厚,也可能是口袋保护装置: - )