Awk / gsub
Résolu
Cc_92
Messages postés
3
Statut
Membre
-
Cc_92 Messages postés 3 Statut Membre -
Cc_92 Messages postés 3 Statut Membre -
Bonjour,
J'ai un fichier csv en entrée qui ressemble à cela :
1;1#26#29;1
2;;1
3;2#15#;1
J'aimerai obtenir en sortie un fichier csv avec la donnée de la deuxième colonne découpé en plusieurs colonnes.
J'ai fait un simple awk :
awk -F';' '{ $2 = ($2 != "" ? gsub(/#/, ";") : ";;" ) } 1' OFS=';' test.txt > test2.txt
Et voici la sortie obtenue :
1;2;26;29;1
2;;;;1
3;2;15;;1
Je ne comprends pas pourquoi le 1 (première ligne, 1ere colonne) se transforme en 2 dans le fichier en sortie...
Auriez-vous une idée ?
Merci pour votre aide.
J'ai un fichier csv en entrée qui ressemble à cela :
1;1#26#29;1
2;;1
3;2#15#;1
J'aimerai obtenir en sortie un fichier csv avec la donnée de la deuxième colonne découpé en plusieurs colonnes.
J'ai fait un simple awk :
awk -F';' '{ $2 = ($2 != "" ? gsub(/#/, ";") : ";;" ) } 1' OFS=';' test.txt > test2.txt
Et voici la sortie obtenue :
1;2;26;29;1
2;;;;1
3;2;15;;1
Je ne comprends pas pourquoi le 1 (première ligne, 1ere colonne) se transforme en 2 dans le fichier en sortie...
Auriez-vous une idée ?
Merci pour votre aide.
A voir également:
- Awk gsub
- Awk compréhension d'une commande ✓ - <a href="https://forums.commentcamarche.net/forum/debian-174">Forum Debian</a>
- Awk dédoublonner un print ✓ - <a href="https://forums.commentcamarche.net/forum/shell-287">Forum Shell</a>
- Printf caractère % dans awk ✓ - <a href="https://forums.commentcamarche.net/forum/shell-287">Forum Shell</a>
- SED ou Awk sous windows ?? - <a href="https://forums.commentcamarche.net/forum/windows-11">Forum Windows</a>
- Suppression de lignes en awk ✓ - <a href="https://forums.commentcamarche.net/forum/shell-287">Forum Shell</a>
Ce n'est pas aussi simple que ça... Pour mon fichier csv, chaque ligne doit avoir le même nombre de colonne. Or parfois la deuxième colonne du fichier d'entrée est vide, d'où mon test.
awk 'BEGIN{FS=OFS=";"}{$2=$2==""?";;":gensub("#",";","g",$2)}1'