열별 에코 변수

열별 에코 변수

변수 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 파일 형식이 지정하지 않는 한 가지는 파일 텍스트에 사용되는 문자 집합입니다. 이는 다른 수단을 통해 전달되어야 합니다.

단일 셀 변수 콘텐츠

이러한 3개 변수를 포함하는 CSV 행을 출력하려면 다음을 수행하면 됩니다.

  • "변수의 이스케이프 문자
  • 큰따옴표로 묶으세요.
  • 쉼표로 연결
  • 줄 바꿈을 추가합니다.

printf셸에 내장된 함수는 문자열을 CSV 필드로 ksh93출력하는 형식으로 사용되므로 %#q위의 처음 두 지점은 인용이 필요한 값에 대해 처리됩니다. 따라서 해당 셸에는 다음이 포함됩니다.

 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"

관련 정보