我有一个shell脚本输出如下
##########################################################
Creation date: 15-03-2022 / 15:03
performed by: user
Environment: E_MTE_04
Reference - Repository: TEST
-BSL Number of documents: XXX
-Syr Number of documents: XXX
-DEB Number of documents: XXX
Candidate - Repository: TEST
-BSL Number of documents: XXX
-Syr Number of documents: XXX
-DEB Number of documents: XXX
字符串
我尝试在脚本中使用等间距来格式化它,但输出仍然没有统一的间距。我想像下面这样打印输出。
##########################################################
Creation date: 15-03-2022 / 15:03
performed by: user
Environment: E_MTE_04
Reference - Repository: TEST
-BSL Number of documents: XXX
-Syr Number of documents: XXX
-DEB Number of documents: XXX
Candidate - Repository: TEST
-BSL Number of documents: XXX
-Syr Number of documents: XXX
-DEB Number of documents: XXX
型
有没有任何commnads可以做到这一点。我使用bash。这里是代码。
echo "##########################################################" >> $log
echo Creation date: $today" / $time">> $log
echo performed by: $USER >> $log
echo Environment: $firstEnv >> $log
echo Reference - Repository: $firstParamomsID >> $log
echo -BSL Number of documents: XXX >> $log
echo -Syr Number of documents: XXX >> $log
echo -DEB Number of documents: XXX >> $log
echo Candidate - Repository: $secondParamomsID >> $log
echo -BSL Number of documents: XXX >> $log
echo -Syr Number of documents: XXX >> $log
echo -DEB Number of documents: XXX >> $log
型
谢谢
4条答案
按热度按时间yquaqz181#
使用制表符分隔列,然后使用标准的
expand
实用程序使用空格展开制表符。例如,字符串
产生
型
您唯一需要做的是确保
-t
选项指定的制表位足够大,以容纳每列中最长的字符串。xienkqul2#
假设您可以更改脚本,一个想法是将
printf
调用替换为echo
,例如:安装程序:
字符串
我们的
printf
字符串:型
其中:
%-30%s
-打印宽度为30的左对齐字段中的第一个参数%s\n
-打印第二个参数,后跟一个换行符替换当前的
echo
代码如下所示:型
如果所有的
printf
调用都在连续的行上(即行之间没有其他代码),你可以使用一个printf
来处理所有的字符串;printf
将重新应用$fmt
,直到它耗尽输入字符串列表,例如:型
**注意:**额外的空格(行首,参数之间)是可选的;我添加了额外的空格以提高可读性
这两种方法都产生:
型
9avjhtql3#
在标签和变量之间添加空格
变更:
字符串
收件人:
型
quhf5bfb4#
您还可以使用
column
实用程序,如下所示:字符串
魔术是由
column
在最后一行完成的。这是我得到的输出:
型
请注意,我系统地用{}包围变量;这是一个很好的做法,一些同事说。