変数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を並べて印刷/エクスポートする必要があります。
答え1
Microsoft Excelが理解できるファイルを生成する最も簡単な方法は、プレーンテキストであるCSV形式を使用することです。内部に基準形式、行は改行で区切られ、セルはコンマで区切られ、二重引用符はコンマや改行などの問題のある文字を含むフィールドを引用するために使用され、二重引用符自体は""
。
CSVファイル形式が指定しない1つは、ファイルテキストに使用される文字セットです。これは他の手段を介して渡されるべきです。
単一セル変数コンテンツ
これら3つの変数を含むCSV行を出力するには、次のようにします。
"
変数のエスケープ文字- 二重引用符で囲みます。
- カンマで接続
- 改行を追加します。
printf
シェルに組み込まれた関数は、文字列をCSVフィールドに出力ksh93
する形式で使用されるため、%#q
上記の最初の2つのポイントは、引用符が必要な値に対して処理されます。したがって、そのシェルには次のものが含まれます。
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
//を使用すると、貼り付けを使用してエスケープされた変数の拡張子を含む3つのストリームを貼り付けることもzsh
できます。ksh
"
paste -d '"",' - <(printf '%s\n' "${var1//\"/\"\"}") - \
- <(printf '%s\n' "${var2//\"/\"\"}") - \
- <(printf '%s\n' "${var3//\"/\"\"}") - < /dev/null > 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"