일부 csv를 req 형식으로 변환하고 동일한 이름의 다른 위치에 저장해야 합니다.

일부 csv를 req 형식으로 변환하고 동일한 이름의 다른 위치에 저장해야 합니다.

입력 CSV 파일 INPUT_FILE이 있습니다.

A_B_C_NFM001_20150729.csv
A_B_C_NFM002_20150729.csv
A_B_C_NFM003_20150730.csv

입력 파일에 대해 다음 변환을 수행한 후 입력과 이름이 같은 출력 파일을 원합니다. 나는 이것을 시도했습니다 :

#!/bin/bash

TARGET=/path/transformed_dir
var=echo /home/dbadmin/Indus_Project/PING_STATUS/A_B_C_*.csv | grep -oP '(?<=_)\d+(?=\.)'
arr=($var)
for i in "${arr[@]}"
do
  awk -F, 'NR==1 { for (i=2; i<=NF; i++) sn[i]=$i } NR>1 { for (i=2; i<=NF; i++) print $1 "," sn[i] "," $i }' A_B_C__$i.csv > $TARGET/A_B_C__$i.csv
done

그러나 그것이 제공하는 출력 파일은 다음과 같습니다.A_B_C_*_.csv

답변1

배열 선언은 다음과 같아야 합니다.

declare -a arr=$( $(echo /home/dbadmin/Indus_Project/PING_STATUS/A_B_C_*.csv) | grep -oP '(?<=_)\d+(?=\.)' )

var원래 명령에서는 선언이 작동하지 않아야 하며 를 통해 배열을 선언하는 과정을 우회 할 필요가 없습니다 arr.var

관련 정보