Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 wink


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

Squashfs a écrit :

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 wink


==> 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 ? big_smile


==> 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 wink

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 wink


==> 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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde 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 wink

Et remerci pour ta participation, je teste ça wink


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne