ASCII ファイルをコンマ区切りの出力に解析する bash スクリプトを作成しました。それはうまくいきました。現在、これらのファイルの新しいファイル レイアウトが徐々に導入されています。
私のスクリプトには、ASCII ファイル ヘッダーに存在する特定のマーカーに応じて呼び出したい 2 つの解析関数 (レイアウトごとに 1 つ) があります。スクリプトは次のように構成されています。
#!/bin/bash
function parseNewfile() {...parse stuff...return stuff...}
function parseOldfile() {...parse stuff...return stuff...}
#loop thru ASCII files array
i=0
while [ $i -lt $len ]; do
#check if file contains marker for new layout
grep CSVHeaderBox output_$i.ASC
#calls parsing function based on exit code
if [ $? -eq 0 ]
then
CXD=`parseNewfile`
else
CXD=`parseOldfile`
fi
echo ${array[$i]}| awk -v cxd=`echo $CXD` ....
let i++
done>>${outdir}/outfile.csv
...
スクリプトはエラーになりません。常に元の関数「parseOldfile」を呼び出し、新しい関数を無視します。新しいレイアウトでいくつかのファイルをスクリプトに具体的にフィードした場合でも。
私がやろうとしていることは、とても些細なことのように思えます。ここで何が欠けていますか?
編集: 古いファイル レイアウトと新しいファイル レイアウトのサンプル。
1) 古いファイル レイアウト
F779250B
=====BOX INFORMATION=====
Model = R15-100
Man Date = 07/17/2002
BIST Version = 3.77
SW Version = 0x122D
SW Name = v1b1645
HW Version = 1.1
Receiver ID = 00089787556
=====DISK INFORMATION=====
....
2) 新しいファイルレイアウト
F779250B
=====BOX INFORMATION=====
Model = HR22-100
Man Date = 07/17/2008
BIST Version = 7.55
SW Version = 0x066D
SW Name = v18m1fgu
HW Version = 2.3
Receiver ID = 028910170936
CSVHeaderBox:Platform,ManufactureDate,BISTVersion,SWVersion,SWName,HWRevision,RID
CSVValuesBox:HR22-100,20080717,7.55,0x66D,v18m1fgu,2.3,028910170936
=====DISK INFORMATION=====
....