我有一些输入 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
via 。var