2016-12-18 129 views
0

我有一個名爲「main.ksh」的腳本,它返回「output.txt」文件,我通過郵件發送該文件(列表包含50多條記錄,例如我只給出3條記錄)。在shell腳本中,HTML如何在awk命令中工作?

郵件輸出我得到的是:(10周的cols)

DATE FEED FILE_NAME JOB_NAME SCHEDULED TIME SIZE COUNT STATUS 
Dec 17 INVEST  iai  guxmow080 TUE-SAT 02:03 0.4248 4031 On_Time 
Dec 17 SECURITIES amltxn gdcpl3392 TUE-SAT 02:03 0.0015 9 Delayed 
Dec 17 CONNECTED amlbene gdcpl3392 TUE-SAT 02:03 0.0001 1 No_Records 

輸出完美的色彩:(僅6周的cols)

DATE FEED FILE_NAME JOB_NAME SCHEDULED TIME SIZE COUNT STATUS 
Dec 17 INVEST  iai  guxmow080 On_Time(green color) 
Dec 17 SECURITIES amltxn gdcpl3392 Delayed(red color) 
Dec 17 CONNECTED amlbene gdcpl3392 No_Records(yellow color) 

我實現着色的延遲,ON_TIME和No_Records場我寫下腳本給我底部輸出。

awk 'BEGIN { 
print "<html>" \ 
"<body bgcolor=\"#333\" text=\"#f3f3f3\">" \ 
"<pre>" 
} 

NR == 1 { print $0 } 

NR > 1 { 
if  ($NF == "Delayed")  color="red" 
else if ($NF == "On_time")  color="green" 
else if ($NF == "No_records") color="yellow" 
else       color="#003abc" 

Dummy=$0 
sub("[^ ]+$","",Dummy) 
print Dummy "<span style=\"color:" color (bold ? ";font-weight:bold" : "")(size ? ";font-size:size" : "") (italic ? ";font-style:italic" : "") "\">" $NF "</span>" 

} 

END { 
print "</pre>" \ 
"</body>" \ 
"</html>" 
} 
' output.txt > output.html 

有4列自動跳過。

+0

你的腳本對我來說是完美的(複製粘貼它)。你確定output.txt是正確的格式嗎?在用Dummy編輯之前檢查了這一點。 – kabanus

+0

@kabanus,您好,先生,我想這麼好因爲我使用awk打印所有10個cols,如下awk'{printf(「% - 5s%s \ t%-33s%-35s%-39s%s \ t%s% 3s \ t%s \ t%s \ n「,$ 1,$ 2,$ 3,$ 4,$ 5,$ 6,$ 7,$ 8,$ 9,$ 10)}'> output.txt – user7268185

+0

如果7-10美元不存在仍然工作。你可以複製粘貼output.txt的前4行(不使用awk或其他東西)嗎?新版本重複行,但仍然顯示我的所有列。 – kabanus

回答

0

|日期| feed_names | file_names | job_names | SCHEDULED_TIME |時間戳|大小|算|狀態|

12月19日ISS_BENEFICIAL_OWNERS_FEED amlcpbo_iss_20161219.txt gdcpl3392_uxmow080_ori_isz_dat WEEK_DAYS 00:03 9.3734 34758 ON_TIME

12月19日ISS_INVESTORS_FEED amlinvest_iss_20161219.txt gdcpl3392_uxmow080_ori_isz_dat WEEK_DAYS 00:01 0.0283 82 ON_TIME

12月19日ISS_TRANSACTIONS_FEED amltran_iss_1_20161219.txt gdcpl3392_uxmow080_ori_isz_dat WEEK_DAYS 00: 12 14.022 36532 DELAYED

12月19日ISS_TRANSACTIONS_FEED amltran_iss_5_20161219.txt gdcpl3392_uxmow080_ori_isz_dat WEEK_DAYS零點23 0.0010 3 DELAYED

12月19日IBS_CUSTOMER_FEED ibscust_aml _ *** _ 20161219.txt gdcpl3392_uxmow080_ori_sfp_ibc WEEK_DAYS(11 _out_of_11)-NA- ARRIVED

12月19日IBS_DDA_NOSTRO_ACCOUNT_FEED ibsacct_aml _ *** _ 20161219.txt gdcpl3392_uxmow080_ori_sfp_ibc WEEK_DAYS(44 _out_of_44)-NA- ARRIVED

12月19日GP_ _TRANSACTIONS_FEED amltrans_ _20161219.txt gdcpl3392_uxmow080_ori_sfp_glo WEEK_DAYS(3 _out_of_30)-NA- ARRIVED

但是,當我試圖PRI nt按順序使用以下命令
awk'{printf(「% - 5s%s \ t%-33s%-35s%-39s%s \ t%s%-3s \ t%s \ t%s \ n「,1美元,2美元,3美元,4美元,5美元,6美元,7美元,8美元,9美元,10美元)}'output.txt,我得到的順序格式輸出 ,但4列被跳過。請建議!

|日期| feed_names | file_names | job_names | SCHEDULED_TIME |時間戳|大小|算|狀態|

12月19日ISS_BENEFICIAL_OWNERS_FEED amlcpbo_iss_20161219.txt gdcpl3392_uxmow080_ori_isz_dat ON_TIME

12月19日ISS_INVESTORS_FEED amlinvest_iss_20161219.txt gdcpl3392_uxmow080_ori_isz_dat ON_TIME

12月19日ISS_TRANSACTIONS_FEED amltran_iss_1_20161219.txt gdcpl3392_uxmow080_ori_isz_dat DELAYED

12月19日ISS_TRANSACTIONS_FEED amltran_iss_5_20161219。TXT gdcpl3392_uxmow080_ori_isz_dat延遲

12月19日IBS_CUSTOMER_FEED ibscust_aml _ *** _ 20161219.txt gdcpl3392_uxmow080_ori_sfp_ibc ARRIVED

12月19日IBS_DDA_NOSTRO_ACCOUNT_FEED ibsacct_aml _ *** _ 20161219.txt gdcpl3392_uxmow080_ori_sfp_ibc ARRIVED

12月19日GP_ _TRANSACTIONS_FEED amltrans_ _20161219。 txt gdcpl3392_uxmow080_ori_sfp_glo YET_TO_RECEIVE

+0

將所有這些移動到您的問題中,並使用編輯器的{}'按鈕正確地格式化輸入/輸出,就像您爲代碼示例所做的那樣。您是否嘗試過在輸入文件上運行dos2unix或類似的建議? –

+0

此問題與[另一個](http://stackoverflow.com/questions/40738933/html-in-unix-shell-scripting-with-sequential-output)相關,通過另一個用戶名創建。不希望您的解決方案得到OP的獎勵。 – Jdamian

相關問題