Unix - remplir champs vide dans fichier
Résolu
JsuisNul
-
JsuisNul -
JsuisNul -
Bonjour,
Tout d'abord, je suis un débutant en script shell et je vous remercie d'avance pour votre aide.
Voila ce que je souhaiterai faire.
j'ai un fichier au format CSV avec des ";" comme séparateur de champs.
ex : aaaaa;bbbbb;cccc;dddd
je voudrais lorsque la ligne est incomplète (c'est toujours le même champs qui est concerné) inserer une valeur par défaut à la place du champs manquant
ex: aaaa;;cccc;dddd => aaaa;valeur par défaut;cccc;dddd
Par contre si le champ est renseigné je ne veux pas la modifier.
Si quelqu'un peut m'aider, merci.
Tout d'abord, je suis un débutant en script shell et je vous remercie d'avance pour votre aide.
Voila ce que je souhaiterai faire.
j'ai un fichier au format CSV avec des ";" comme séparateur de champs.
ex : aaaaa;bbbbb;cccc;dddd
je voudrais lorsque la ligne est incomplète (c'est toujours le même champs qui est concerné) inserer une valeur par défaut à la place du champs manquant
ex: aaaa;;cccc;dddd => aaaa;valeur par défaut;cccc;dddd
Par contre si le champ est renseigné je ne veux pas la modifier.
Si quelqu'un peut m'aider, merci.
3 réponses
-
Salut,
$ cat fichier aaaaa;bbbbb;cccc;dddd aaaa;;cccc;dddd aaaaa;bbbbb;cccc;dddd aaaaa;bbbbb;cccc;dddd aaaa;;cccc;dddd aaaaa;bbbbb;cccc;dddd aaaa;;cccc;dddd aaaa;;cccc;dddd aaaa;;cccc;dddd aaaaa;bbbbb;cccc;dddd $ sed -i.bak '/^[^;]*;;/s/;;/;valeur par défaut;/' fichier $ cat fichier aaaaa;bbbbb;cccc;dddd aaaa;valeur par défaut;cccc;dddd aaaaa;bbbbb;cccc;dddd aaaaa;bbbbb;cccc;dddd aaaa;valeur par défaut;cccc;dddd aaaaa;bbbbb;cccc;dddd aaaa;valeur par défaut;cccc;dddd aaaa;valeur par défaut;cccc;dddd aaaa;valeur par défaut;cccc;dddd aaaaa;bbbbb;cccc;dddd $
;-))
$ man woman
Il n'y a pas de page de manuel pour woman.
GNU/Linux : Gnu/Linux is Not Ubuntu !-
-
Salut,
Je te les ai laissés ;-))
Mais en fait ça en tient compte ;-))
$ cat fichier aaaaa;bbbbb;;dddd aaaa;;cccc;dddd aaaaa;bbbbb;cccc;dddd aaaaa;bbbbb;cccc;dddd aaaa;;cccc;dddd aaaaa;bbbbb;cccc; aaaa;;cccc;dddd ;;cccc;dddd ;;cccc; ;bbbbb;cccc;dddd $ sed '/^[^;]*;;/s/;;/;valeur par défaut;/' fichier aaaaa;bbbbb;;dddd aaaa;valeur par défaut;cccc;dddd aaaaa;bbbbb;cccc;dddd aaaaa;bbbbb;cccc;dddd aaaa;valeur par défaut;cccc;dddd aaaaa;bbbbb;cccc; aaaa;valeur par défaut;cccc;dddd ;valeur par défaut;cccc;dddd ;valeur par défaut;cccc; ;bbbbb;cccc;dddd $
;-)) -
-
-
-
-
hello
$ echo "a;b;c;d;e;;f;g" | awk -v c="valeur par defaut" 'BEGIN{FS=OFS=";"} !$6 {$6=c} {print}' a;b;c;d;e;valeur par defaut;f;g $ $ echo "a;b;c;d;e;f;g;" | awk -v c="valeur par defaut" 'BEGIN{FS=OFS=";"} !$6 {$6=c} {print}' a;b;c;d;e;f;g; $ -
Hello,
Je viens de tester la solution de dubcek et ça fonctionne !!
merci beaucoup et notamment à Jipicy ( je crois que je suis vraiment trop nul pour pouvoir adapter ta solution ;oP)
Merci à tous.