Créer un script Bash pour transformer un fichier CSV en un fichier OFX nécessite plusieurs étapes, car le format OFX (Open Financial Exchange) est basé sur XML et suit une structure spécifique.
Voici un exemple de script Bash pour cela :
#!/bin/bash
# Vérification des arguments
if [ "$#" -ne 2 ]; then
echo "Usage: $0 input.csv output.ofx"
exit 1
fi
input_file="$1"
output_file="$2"
# Création de l'en-tête du fichier OFX
cat <<EOL > "$output_file"
OFXHEADER:100
DATA:OFXSGML
VERSION:102
SECURITY:NONE
ENCODING:UTF-8
CHARSET:NONE
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:NONE
<OFX>
<BANKMSGSRSV1>
<STMTTRNRS>
<TRNUID>1001</TRNUID>
<STATUS>
<CODE>0</CODE>
<SEVERITY>INFO</SEVERITY>
</STATUS>
<STMTRS>
<CURDEF>EUR</CURDEF>
<BANKTRANLIST>
EOL
# Lecture et conversion des données CSV en OFX
tail -n +2 "$input_file" | while IFS=',' read -r date amount payee; do
echo " <STMTTRN>" >> "$output_file"
echo " <TRNTYPE>DEBIT</TRNTYPE>" >> "$output_file"
echo " <DTPOSTED>${date//[-]/}</DTPOSTED>" >> "$output_file"
echo " <TRNAMT>$amount</TRNAMT>" >> "$output_file"
echo " <NAME>$payee</NAME>" >> "$output_file"
echo " </STMTTRN>" >> "$output_file"
done
# Fermeture des balises OFX
cat <<EOL >> "$output_file"
</BANKTRANLIST>
</STMTRS>
</STMTTRNRS>
</BANKMSGSRSV1>
</OFX>
EOL
echo "Conversion terminée : $output_file"
YYYYMMDD
), ce qui est pris en charge par la commande ${date//[-]/}
.Date,Montant,Payee
2024-02-01,-50.00,Supermarché
2024-02-02,1200.50,Salaire
<TRNTYPE>
en fonction du montant (crédit/débit).