#1 Le 10/04/2014, à 16:42
- soupaloignon
[Réglé] Regrouper 6 lignes en 1
Bonjour à tous,
J'ai quelques manips à faire sur des fichiers et je séche sur la dernière partie.
A l'étape 1 mes fichiers sont structurés comme ça :
Info 1A
Info 1B
Info 1C
Info 1D
Info 1E
Info 1F
Info 2A
Info 2B
Info 2C
Info 2D
Info 2E
Info 2F
Info 3A
Info 3B
Info 3C
Info 3D
Info 3E
Info 3F
(Ce sont des copiers coller que je fais. chaque ligne est composée de caractéres alphanumériques. la ligne vide toute les 6 lignes est juste un repére visuel pour séparer les blocs d'infos)
Pour l'étape 2 je veux virer les lignes vides. Je m'en sors avec un
sed -i "/^[ \t]*$/d" MonFichier
L'étape 3 consiste à metre un ";" à la fin de chaque ligne. Je m'en sors avec un
sed -i 's/$/;/' MonFichier
L'étape 4 va consister, et c'est là que je séche, à mettre sur 1 ligne chaque groupe de 6 lignes, pour arriver à ce résultat :
Info 1A;Info 1B;Info 1C;Info 1D;Info 1E;Info 1F;
Info 2A;Info 2B;Info 2C;Info 2D;Info 2E;Info 2F;
Info 3A;Info 3B;Info 3C;Info 3D;Info 3E;Info 3F;
Et dans l'étape finale je colle tout ça dans Calc
Merci d'avance pour vos infos
Dernière modification par soupaloignon (Le 10/04/2014, à 18:37)
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#2 Le 10/04/2014, à 16:48
- Squashfs
Re : [Réglé] Regrouper 6 lignes en 1
Pour supprimer les lignes vides :
sed -i '/^$/d' TonFichier
Hors ligne
#3 Le 10/04/2014, à 16:52
- soupaloignon
Re : [Réglé] Regrouper 6 lignes en 1
Pour supprimer les lignes vides :
sed -i '/^$/d' TonFichier
Merci pour l'info. La portion que j'utilisais fonctionnait, mais la tienne aussi, et elle est plus simple. Je prends
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#4 Le 10/04/2014, à 17:15
- pingouinux
Re : [Réglé] Regrouper 6 lignes en 1
Bonjour,
$ awk -v ORS="" '{if(!/^[\s]*$/){print $0";";n++;if(!(n%6)){printf"\n"}}}' MonFichier
Info 1A;Info 1B;Info 1C;Info 1D;Info 1E;Info 1F;
Info 2A;Info 2B;Info 2C;Info 2D;Info 2E;Info 2F;
Info 3A;Info 3B;Info 3C;Info 3D;Info 3E;Info 3F;
Hors ligne
#5 Le 10/04/2014, à 17:28
- soupaloignon
Re : [Réglé] Regrouper 6 lignes en 1
Merci pingouinux, je teste ça. Mais à 1ère vue il fait les 3 manips d'un coup ?
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#6 Le 10/04/2014, à 17:35
- soupaloignon
Re : [Réglé] Regrouper 6 lignes en 1
Oh putain oui, ça fait les 3 actions d'un coup. Tu es vraiment un tueur
Un grand merci en tout cas
En fait il y avait une erreur dans le résultat, mais qui venait d'une erreur de manipulation de ma part dans le fichier de base. Je vais ouvrir un nouveau post pour voir s'il y a une solution avec un script
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#7 Le 10/04/2014, à 17:47
- pingouinux
Re : [Réglé] Regrouper 6 lignes en 1
Un peu plus simple :
awk -v ORS="" '!/^[\s]*$/{print $0";";if(!(++n%6))printf"\n"}' MonFichier
Hors ligne
#8 Le 10/04/2014, à 18:06
- soupaloignon
Re : [Réglé] Regrouper 6 lignes en 1
Et qui marche nickel aussi
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#9 Le 11/04/2014, à 04:56
- nesthib
Re : [Réglé] Regrouper 6 lignes en 1
Je viens juste de voir le lien avec ce fichier en répondant à l'autre fil… voici donc une version awk plus simple (pas besoin de s'embêter, awk sait faire ça par défaut avec les séparateurs) :
awk 'BEGIN{RS="\n\n+";FS="\n";OFS=";"}$1=$1' fichier
On définit simplement les limites de bloc comme 2 sauts de ligne ou plus, le séparateur d'entrées comme un saut de ligne et le séparateur de sortie comme étant un point virgule.
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
#10 Le 11/04/2014, à 12:41
- soupaloignon
Re : [Réglé] Regrouper 6 lignes en 1
Rebonjour nesthib
Et remerci pour ta participation, je teste ça
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne