Modifier plusieurs champs dans un fichier Csv
Bonjour à tous,
Je fais un script pour automatiser des taches administratives sous linux.
Actuellement, je bloque sur un problème de modification de champs. Je ne vois pas d'où cela vient.
Je souhaite remplacer certain champs vide par XX. Pour l'exemple, je n'utilise que de champs mais mes lignes contiennent 40 champs. Je dois en modifier une petite dizaine.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
#!/bin/bash
...
# création du fichier et initialisation de la variable tmp
echo > $nouveau fichier
tmp=''
# Lecture du fichier ligne par ligne
for ligne in $(cat test.csv)
do
# Modification des champs 3 et 4
for c in 3 4 ;
do
# Selectionne une cellule
cel=$(echo $ligne | awk -F";" '{print $'$c'}')
# Test de la cellule
if [[ "$cel" == "" ]]
then # Elle vide, j'atribue XX
tmp=$(echo $ligne | awk -F";" 'BEGIN { OFS=";" }{$'sc'="XX"; print $0}')
echo $tmp >> $nouveaufichier
cat $nouveaufichier > test.csv
tmp=''
fi
done
done |
le fichier test.csv avant
aa;bb;;;
aa;bb;;dd,
aa;bb;cc;;
le resultat :
aa;bb;xx;;
aa;bb;;xx;
aa;bb;xx;dd,
aa;bb;cc;xx;
2 problèmes apparaissent :
Une première ligne vide (je ne vois pas d'où elle sort.
le resultat pour la ligne aa;bb;;; qui devrait etre aa;bb;xx;xx;
Quelqu'un voit-il le problème dans mon code ?
merci d'avance