Shellscript конвертировать CSV в XML - PullRequest
0 голосов
/ 13 марта 2019

Здесь у меня есть требование для отображения на основе доступности, который должен повторить тот же сегмент. Как получить сравнение массивов?

У меня есть CSV-файл, как показано ниже: -

Столбец [0], Столбец [1]

AE1110,922222222
AE2220,911222222
AE2220,9332222
AT300314,944422222
AT300314,955511111

и я хочу преобразовать в XML следующим образом:

<xml>
<Header>
<Filename>AE_AAA_20190312211427.xml</Filename>
</Header>
<Record>
<AVAILABILITY>922222222</AVAILABILITY>
<AAADATE>2019-03-07</AAADATE>
</Record>
<Footer>
<TotalNoOfRecords>1</TotalNoOfRecords>
</Footer>
</xml>

На основании количества доступных данных должно рассчитываться общее количество записей. Здесь мне нужно напечатать один и тот же сегмент дважды, если у меня есть 2 доступных.

#!/bin/bash
file_in="sample.csv"
now="$(date +'%Y-%m-%d')"
tstamp=$(date "+%Y%m%d%H%M%S")
while IFS=$',' read -r -a arry
do
country_code=$(echo "${arry[0]}" | awk '{print substr ($0, 0, 2)}')
filename=${country_code}_"ARRW"_$tstamp
file_out="${filename}".xml
for i in `${arry[0]}|awk 'BEGIN{FS="_"}{if (++dup[$1] >= 2) print}'`;
do
echo $i
done
echo '<xml>
<Header>' > $file_out
echo '    <Filename>'${filename}'</Filename>' >> $file_out
echo '  <Record>' >> $file_out
echo '    <AVAILABILITY>'${arry[1]}'</AVAILABILITY>' >> $file_out
echo '    <AAADATE>'${now}'</AAADATE>' >> $file_out
echo '  </Record>' >> $file_out
echo '</Footer>
</xml>' >> $file_out
done < $file_in
...