입력 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