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 : Sélectionner tout - Visualiser dans une fenêtre à part
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