入力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