變量1:
'file:'"$AI_SERIAL_LOOKUP"'/GDFS_Off_Peak_Lkp.txt'
'file:'"$AI_SERIAL_LOOKUP"'/mssu2_massched.mssulrm_lkup_'"$AI_PHASE"'.txt'
'file:'"${AI_SERIAL_TEMP}"
變量2:
$PRIVATE_SCRIPT/2_ctc_rpt_dds_extn_stage_load.ksh ${AI_SERIAL}/${AB_JOB}_dds_parm_extn_iri_ctc_rpt.dat _${DestType} ${CURR_TIME_STAMP}
$PRIVATE_SCRIPT/1_ctc_rpt_dds_extn_stage_to_base.ksh ${AI_SERIAL}/${AB_JOB}_ ${DestType} ${CURR_TIME_STAMP}
變量3:
TGDM01.T3113_DA_DLVR_SP a,
TGIDM01.T3121_RT_REQ_CHK b
TGIM01.T3121_RPT_RQ_CHK
我需要在Microsoft Excel工作表中并排列印/導出變量1,2,3.
解決方法:
生成Microsoft Excel了解的檔案最簡單的方法是使用CSV格式,因為它隻是簡單格式的文本.在standard格式中,行以換行符分隔,單元格以逗号分隔,雙引号用于引用包含有問題字元(如逗号和換行符)的字段,以及雙字元本身作為“”輸入的字段.
CSV檔案格式未指定的一件事是檔案文本中使用的字元集.必須通過其他方式進行溝通.
可變内容為單個單元格
要輸出包含這3個變量的CSV行,我們需要做的就是:
>逃避變量中的字元
>用雙引号括起來
>用逗号加入他們
>添加換行符.
printf内置了ksh93 shell,作為%#q格式輸出字元串作為CSV字段,是以需要引用上面兩點需要引用的值.是以在那個shell中,它隻是:
printf '%#q,%#q,%#q\n' "$var1" "$var2" "$var3"
使用bash / zsh / ksh,您可以手動執行該編碼并使用以下内容引用每個單元格:
printf '"%s","%s","%s"\n' "${var1//\"/\"\"}" "${var2//\"/\"\"}" "${var3//\"/\"\"}"
POSIXly,您可以使用awk進行編碼:
awk '
BEGIN {
for(i = 1; i < ARGC; i++) {
gsub(/"/, "\"\"", ARGV[i])
printf "%s\"%s\"", sep, ARGV[i]
sep = ","
}
printf "\n"
}' "$var1" "$var2" "$var3" > file.csv
在你的輸入,所有這些給:
"'file:'""$AI_SERIAL_LOOKUP""'/GDFS_Off_Peak_Lkp.txt'
'file:'""$AI_SERIAL_LOOKUP""'/mssu2_massched.mssulrm_lkup_'""$AI_PHASE""'.txt'
'file:'""${AI_SERIAL_TEMP}""","$PRIVATE_SCRIPT/2_ctc_rpt_dds_extn_stage_load.ksh ${AI_SERIAL}/${AB_JOB}_dds_parm_extn_iri_ctc_rpt.dat _${DestType} ${CURR_TIME_STAMP}
$PRIVATE_SCRIPT/1_ctc_rpt_dds_extn_stage_to_base.ksh ${AI_SERIAL}/${AB_JOB}_ ${DestType} ${CURR_TIME_STAMP}","TGDM01.T3113_DA_DLVR_SP a,
TGIDM01.T3121_RT_REQ_CHK b
TGIM01.T3121_RPT_RQ_CHK"
每個變量的每一行作為電子表格單元格
這變得更加複雜,因為您還需要将變量拆分為其行.
使用ksh93及其%#q格式:
IFS=
while
found=false
read -ru3 a && found=true
read -ru4 b && found=true
read -ru5 c || "$found"
do
printf '%#q,%#q,%#q\n' "$a" "$b" "$c"
done 3<<< "$var1" 4<<< "$var2" 5<<< "$var3" > file.csv
使用bash / zsh / ksh,您還可以使用粘貼來粘貼3個流,這些流包含“已被轉義的變量的擴充:
paste -d '"",' -
-
- file.csv
你輸入的内容會給出:
"'file:'""$AI_SERIAL_LOOKUP""'/GDFS_Off_Peak_Lkp.txt'","$PRIVATE_SCRIPT/2_ctc_rpt_dds_extn_stage_load.ksh ${AI_SERIAL}/${AB_JOB}_dds_parm_extn_iri_ctc_rpt.dat _${DestType} ${CURR_TIME_STAMP}","TGDM01.T3113_DA_DLVR_SP a,"
"'file:'""$AI_SERIAL_LOOKUP""'/mssu2_massched.mssulrm_lkup_'""$AI_PHASE""'.txt'","$PRIVATE_SCRIPT/1_ctc_rpt_dds_extn_stage_to_base.ksh ${AI_SERIAL}/${AB_JOB}_ ${DestType} ${CURR_TIME_STAMP}","TGIDM01.T3121_RT_REQ_CHK b"
"'file:'""${AI_SERIAL_TEMP}""","","TGIM01.T3121_RPT_RQ_CHK"
标簽:linux
來源: https://codeday.me/bug/20190814/1652736.html