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.
le fichier test.csv avant
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
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
Partager