一部の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元のコマンドでは宣言が機能しないようにし、配列を宣言するプロセスをバイパスする必要はありませんarrvar

関連情報