#1 Le 10/04/2014, à 18:05
- soupaloignon
[Réglé] 2 groupes d'infos sur une ligne à passer en 2 lignes
Bonjour à tous,
J'ai un fichier contenant des infos structurées de la manière suivante :
Info 1A
Info 1B
Info 1C
Info 1D
Info 1E
Info 2A
Info 2B
Info 2C
Info 2D
Info 2E
Info 3A
Info 3B
Info 3C
Info 3D
Info 3E
La 3ème ligne de chaque bloc est un code postal (5 chiffres sans espaces) + 1 espace (éventuellement plusieurs) + la ville
Est ce qu'il y aurait un moyen de trouver chaque ligne commençant par 5 chiffres et faire un retour à la ligne après le 5ème chiffre.
Ensuite je pense qu'un coup de
sed -i 's/^[ \t]*// MonFichier
enlèvera correctement le ou les espaces devant la nouvelle ligne contenant la ville
Edit : Et de cette manière il n'y aura plus d'erreurs pour passer cette ligne de code : http://forum.ubuntu-fr.org/viewtopic.php?id=1544071
Dernière modification par soupaloignon (Le 10/04/2014, à 19:41)
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#2 Le 10/04/2014, à 18:08
- pingouinux
Re : [Réglé] 2 groupes d'infos sur une ligne à passer en 2 lignes
Re-bonjour,
Peux-tu donner un exemple plus concret (avec les codes postaux), et le résultat que tu souhaites ?
Édité : Pour ne récupérer que les lignes "code_postal ville"
sed -rn 's/^([0-9]{5})\s+(.*)/\1\n\2/p' MonFichier
Dernière modification par pingouinux (Le 10/04/2014, à 18:19)
Hors ligne
#3 Le 10/04/2014, à 18:36
- soupaloignon
Re : [Réglé] 2 groupes d'infos sur une ligne à passer en 2 lignes
Ce que j'ai au départ (plusieurs blocs d'infos structurés de cette manière, et séparés par une ligne vide)
Un nom
l'adresse
31000 Toulouse
Tél : 05 05 05 05 05
Nom du responsable
et le but est d'obtenir :
Un nom
l'adresse
31000
Toulouse
Tél : 05 05 05 05 05
Nom du responsable
(ensuite j’enlèverai "Tél : " avec un coup de sed)
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#4 Le 10/04/2014, à 18:46
- pingouinux
Re : [Réglé] 2 groupes d'infos sur une ligne à passer en 2 lignes
sed -r 's/^([0-9]{5})\s+(.*)/\1\n\2/' MonFichier
Édité : Et pour enlever dans la foulée la ligne commençant par "Tél :"
sed -r 's/^([0-9]{5})\s+(.*)/\1\n\2/;/^Tél\s*:/d' MonFichier
Si c'est juste pour enlever "Tél : " en début de ligne
sed -r 's/^([0-9]{5})\s+(.*)/\1\n\2/;s/^Tél\s*:\s*//' MonFichier
Dernière modification par pingouinux (Le 10/04/2014, à 18:53)
Hors ligne
#5 Le 10/04/2014, à 19:30
- soupaloignon
Re : [Réglé] 2 groupes d'infos sur une ligne à passer en 2 lignes
Si c'est juste pour enlever "Tél : " en début de ligne
sed -r 's/^([0-9]{5})\s+(.*)/\1\n\2/;s/^Tél\s*:\s*//' MonFichier
Un grand merci, cela fonctionne nickel
Par rapport à mon fichier d'origine je n'ai donc qu'a envoyer cette ligne de code, et ensuite celle que tu m'as donné sur l'autre post
awk -v ORS="" '!/^[\s]*$/{print $0";";if(!(++n%6))printf"\n"}' MonFichier
Et tout est prêt pour un copier coller dans calc. Que de temps de gagné !!
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#6 Le 11/04/2014, à 04:49
- nesthib
Re : [Réglé] 2 groupes d'infos sur une ligne à passer en 2 lignes
Si tu veux importer tes données dans calc et que tu as des multiples données client, peut être y gagnerais-tu à générer un fichier au format CSV :
Un nom1, l'adresse1, 31001, Ville1, 05 05 05 05 01, Nom du responsable1
Un nom2, l'adresse2, 31002, Ville2, 05 05 05 05 02, Nom du responsable2
…
Que tu peux obtenir simplement avec :
awk 'BEGIN{RS="\n\n+";FS="\n";OFS=", "}$1=$1' fichier
Et en combinant les substitutions :
awk 'BEGIN{RS="\n\n+";FS="\n";OFS=";"}{gsub("Tél : *","");gsub(/[0-9]{5} /,"&"OFS);$1=$1;print}' fichier
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#7 Le 11/04/2014, à 12:39
- soupaloignon
Re : [Réglé] 2 groupes d'infos sur une ligne à passer en 2 lignes
Si tu veux importer tes données dans calc et que tu as des multiples données client, peut être y gagnerais-tu à générer un fichier au format CSV :
Bonjour, et merci pour ta réponse
Dans l'utilisation que je fais du fichier, le copier coller dans calc est plus simple car je le positionne à coté d'autres blocs d'infos (déjà présent dans calc) dans lesquels je dois également récupérer de l'info.
Et c'est ensuite à partir de calc que je génère un csv de l'ensemble pour importer ensuite dans vTiger (un super soft soit dit en passant)
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne