天天看點

linux echo 多個變量,linux – Echo變量columnwise

變量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