列別エコー変数

列別エコー変数

変数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"

関連情報