我有一個 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
是否有任何可用的命令來完成此操作。我使用 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
謝謝
uj5u.com熱心網友回復:
在標簽和變數之間添加空格
改變:
echo Creation date: $today" / $time">> $log
到:
echo Creation date: $today" / $time">> $log
uj5u.com熱心網友回復:
使用制表符分隔列,然后使用標準expand實用程式使用空格擴展制表符。例如,
printf '%s\t%s\n' "Creation date:" "15-03-2022 / 15:03" \
"performed by: " "user" \
"Environment: " "E_MTE_04" |
expand -t 20
生產
Creation date: 15-03-2022 / 15:03
performed by: user
Environment: E_MTE_04
您唯一需要做的就是確保選項指定的制表位-t足夠大以容納每列中最長的字串。
uj5u.com熱心網友回復:
假設您可以更改腳本,一個想法是將echo呼叫替換為printf,例如:
設定:
today='15-03-2022'
time='15:03'
USER=user
firstEnv='E_MTE_04'
firstParamomsID='TEST'
secondaryParamomsID='TEST'
我們的printf格式字串:
fmt="%-30s %s\n"
在哪里:
%-30%s- 在寬度為 30 的左對齊欄位中列印第一個引數%s\n- 列印第二個引數,后跟換行符
替換當前echo代碼如下所示:
echo "##########################################################"
printf "${fmt}" "Creation date:" "${today} / ${time}"
printf "${fmt}" "performed by:" "${USER}"
printf "${fmt}" "Environment:" "${firstEnv}"
printf "${fmt}" "Reference - Repository:" "${firstParamomsID}"
printf "${fmt}" "-BSL Number of documents:" "XXX"
printf "${fmt}" "-5yr Number of documents:" "XXX"
printf "${fmt}" "-DEB Number of documents:" "XXX"
printf "${fmt}" "Candidate - Repository:" "${secondaryParamomsID}"
printf "${fmt}" "-BSL Number of documents:" "XXX"
printf "${fmt}" "-5yr Number of documents:" "XXX"
printf "${fmt}" "-DEB Number of documents:" "XXX"
如果所有printf呼叫都在連續的行上(即行之間沒有其他代碼),您可以使用單個printf來處理所有字串;printf將重新申請$fmt,直到用盡輸入字串串列,例如:
echo "##########################################################"
printf "${fmt}" "Creation date:" "${today} / ${time}" \
"performed by:" "${USER}" \
"Environment:" "${firstEnv}" \
"Reference - Repository:" "${firstParamomsID}" \
"-BSL Number of documents:" "XXX" \
"-5yr Number of documents:" "XXX" \
"-DEB Number of documents:" "XXX" \
"Candidate - Repository:" "${secondaryParamomsID}" \
"-BSL Number of documents:" "XXX" \
"-5yr Number of documents:" "XXX" \
"-DEB Number of documents:" "XXX"
注意:額外的間距(行首,args 之間)是可選的;我添加了額外的空格以提高可讀性
這兩個生成:
##########################################################
Creation date: 15-03-2022 / 15:03
performed by: user
Environment: E_MTE_04
Reference - Repository: TEST
-BSL Number of documents: XXX
-5yr Number of documents: XXX
-DEB Number of documents: XXX
Candidate - Repository: TEST
-BSL Number of documents: XXX
-5yr Number of documents: XXX
-DEB Number of documents: XXX
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/444734.html
上一篇:我可以在LabVIEW中使用ReadDelimitedSpreadsheet.vi函式讀取第一張表以外的內容嗎?
