Commande pour tronquer dans un CSV
Résolu/Fermé
Domcallaghan
Messages postés
13
Date d'inscription
samedi 30 novembre 2013
Statut
Membre
Dernière intervention
9 mai 2014
-
Modifié par Domcallaghan le 6/12/2013 à 16:47
Domcallaghan Messages postés 13 Date d'inscription samedi 30 novembre 2013 Statut Membre Dernière intervention 9 mai 2014 - 6 déc. 2013 à 17:34
Domcallaghan Messages postés 13 Date d'inscription samedi 30 novembre 2013 Statut Membre Dernière intervention 9 mai 2014 - 6 déc. 2013 à 17:34
A voir également:
- Commande pour tronquer dans un CSV
- Invite de commande - Guide
- Commande terminal mac - Guide
- Commande dism - Guide
- Diskpart commande - Guide
- Commande scannow - Guide
4 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 416
6 déc. 2013 à 16:49
6 déc. 2013 à 16:49
Salut,
Un exemple de 2 ou 3 lignes AVANT => APRÈS ne serait pas un luxe ;-))
Le but de la manoeuvre est donc de faire un script shell qui va tronquer les noms trop longs qui se trouve en deuxième position dans une ligne produit.
Un exemple de 2 ou 3 lignes AVANT => APRÈS ne serait pas un luxe ;-))
Domcallaghan
Messages postés
13
Date d'inscription
samedi 30 novembre 2013
Statut
Membre
Dernière intervention
9 mai 2014
Modifié par Domcallaghan le 6/12/2013 à 16:55
Modifié par Domcallaghan le 6/12/2013 à 16:55
Salut,
Alors voici un exemple.
Exemple de ligne :
AVANT
Réf1;nomproduit1;10;15,00;catordinateur
Réf2;nomproduit2;10;15,00;catordinateur
Réf3;nomproduit3 mais ce nom est beaucoup trop long pour n'être qu'un nom de produit dans un site marchand alors il faut le tronquer;10;15,00;catordinateur
Réf4;nomproduit4 mais ce nom est beaucoup trop long pour n'être qu'un nom de produit dans un site marchand alors il faut le tronquer;10;15,00;catordinateur
APRES
Réf1;nomproduit1;10;15,00;catordinateur
Réf2;nomproduit2;10;15,00;catordinateur
Réf3;nomproduit3 mais ce nom est beaucoup trop long ...;10;15,00;catordinateur
Réf4;nomproduit4 mais ce nom est beaucoup trop long ...;10;15,00;catordinateur
Là, j'ai mis des points et je n'ai pas tenu compte des 128 caractères mais l'idée est là. Il faut regarder le nombre de caractères puis si c'est trop grand alors il faut tronquer pour avoir le maximum possible et éviter d'avoir une erreur lors de l'importation.
Alors voici un exemple.
Exemple de ligne :
AVANT
Réf1;nomproduit1;10;15,00;catordinateur
Réf2;nomproduit2;10;15,00;catordinateur
Réf3;nomproduit3 mais ce nom est beaucoup trop long pour n'être qu'un nom de produit dans un site marchand alors il faut le tronquer;10;15,00;catordinateur
Réf4;nomproduit4 mais ce nom est beaucoup trop long pour n'être qu'un nom de produit dans un site marchand alors il faut le tronquer;10;15,00;catordinateur
APRES
Réf1;nomproduit1;10;15,00;catordinateur
Réf2;nomproduit2;10;15,00;catordinateur
Réf3;nomproduit3 mais ce nom est beaucoup trop long ...;10;15,00;catordinateur
Réf4;nomproduit4 mais ce nom est beaucoup trop long ...;10;15,00;catordinateur
Là, j'ai mis des points et je n'ai pas tenu compte des 128 caractères mais l'idée est là. Il faut regarder le nombre de caractères puis si c'est trop grand alors il faut tronquer pour avoir le maximum possible et éviter d'avoir une erreur lors de l'importation.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 416
6 déc. 2013 à 17:03
6 déc. 2013 à 17:03
$ cat plop
Réf1;nomproduit1;10;15,00;catordinateur
Réf2;nomproduit2;10;15,00;catordinateur
Réf3;nomproduit3 mais ce nom est beaucoup trop long pour n'être qu'un nom de produit dans un site marchand alors il faut le tronquer;10;15,00;catordinateur
Réf4;nomproduit4 mais ce nom est beaucoup trop long pour n'être qu'un nom de produit dans un site marchand alors il faut le tronquer;10;15,00;catordinateur
$ awk 'BEGIN{FS=OFS=";"} $2=substr($2,1,50){print}' plop
Réf1;nomproduit1;10;15,00;catordinateur
Réf2;nomproduit2;10;15,00;catordinateur
Réf3;nomproduit3 mais ce nom est beaucoup trop long pou;10;15,00;catordinateur
Réf4;nomproduit4 mais ce nom est beaucoup trop long pou;10;15,00;catordinateur
Utilisateur anonyme
6 déc. 2013 à 17:03
6 déc. 2013 à 17:03
salut,
pas de chance dans ton exemple, le deuxième champ fait 127 caractères
XD
awk 'BEGIN{FS=OFS=";"}{$2=substr($2,1,128)}1' tonFIchier
pas de chance dans ton exemple, le deuxième champ fait 127 caractères
XD
Domcallaghan
Messages postés
13
Date d'inscription
samedi 30 novembre 2013
Statut
Membre
Dernière intervention
9 mai 2014
6 déc. 2013 à 17:21
6 déc. 2013 à 17:21
Je vous remercie beaucoup, cela fonctionne à merveille. Bon et bah comme cela, je devrais pouvoir automatiser tout mon import de produits. Merci encore =)
P.S. Je pouvais mettre le contenu du fichier avec les noms trop longs mais bon, j'ai privilégié un exemple plus parlant.
P.S. Je pouvais mettre le contenu du fichier avec les noms trop longs mais bon, j'ai privilégié un exemple plus parlant.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 416
6 déc. 2013 à 17:23
6 déc. 2013 à 17:23
De rien ;-))
Tiens pour le fun, le même avec sed :
Tiens pour le fun, le même avec sed :
sed 's/\([^;]*\)\(;[^;]\{50\}\)[^;]*\.*/\1\2/' plop
Domcallaghan
Messages postés
13
Date d'inscription
samedi 30 novembre 2013
Statut
Membre
Dernière intervention
9 mai 2014
6 déc. 2013 à 17:34
6 déc. 2013 à 17:34
Oh fallait pas, c'est trop gentil. Je le prends aussi, on ne sait jamais =)