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 15/12/2018, à 21:41

arno_lupin

[résolu] afficher plusieurs lignes en colonnes

Salut,

en sortie sur une commande, j'ai un truc du style

aaa
aaaa

bbbbb

cccc
cc
ccc

ddd

je souhaiterais l'afficher en colonnes

aaa            bbbbb            cccc          ddd
aaaa                            cc
                                ccc

( notez qu'elle n'ont pas toutes le même nombre de lignes )
Je pense pouvoir y parvenir en coupant les différents "block" ( aaa , bbbbb ... ), en les mettant dans des fichiers temporaires séparés et en collant tout ça avec la commande paste.
Ça me semble sacrément bourrin ! sad

Quelqu'un aurait-il un petit coup magique de awk ou autre ?

Dernière modification par arno_lupin (Le 16/12/2018, à 01:34)


Ubuntu 20.04.1 LTS (Focal Fossa) 64-bit .. MATE 1.24.0

Hors ligne

#2 Le 15/12/2018, à 22:38

pingouinux

Re : [résolu] afficher plusieurs lignes en colonnes

Bonsoir,
Essaye ceci

n=0; >o.$n
while read ligs
do
   if [ "$ligs" == "" ]
   then
      ((n++)); >o.$n
   else
      echo "$ligs" >>o.$n
   fi
done <fichier_de_départ
eval paste o.{0..$n}

Hors ligne

#3 Le 15/12/2018, à 23:11

arno_lupin

Re : [résolu] afficher plusieurs lignes en colonnes

Bravo, ça marche !
merci pingouinux

Cependant, on passe par une multitude de fichiers temporaires.
N'y aurait-il pas plus "léger" ?


Ubuntu 20.04.1 LTS (Focal Fossa) 64-bit .. MATE 1.24.0

Hors ligne

#4 Le 16/12/2018, à 00:15

pingouinux

Re : [résolu] afficher plusieurs lignes en colonnes

Tu peux ajouter à la fin

eval rm o.{0..$n}

pour supprimer les fichiers temporaires.

Hors ligne

#5 Le 16/12/2018, à 01:33

arno_lupin

Re : [résolu] afficher plusieurs lignes en colonnes

oui, je comprends.

Comme mon fichier est long et que je ne le veux que sur 4 colonnes, je rajoute une petite boucle :

n=0; >o.$n
while read ligs
do
   if [ "$ligs" == "" ]
   then
      ((n++)); >o.$n
   else
      echo "$ligs" >>o.$n
   fi
done <fichier_de_départ

for ((i=0; i<=n; i++))
do
    paste "o.$((i++))" "o.$((i++))" "o.$((i++))" "o.$i" > oo.$i
    fic=( ${fic[@]} "oo.$i" )
done
cat ${fic[@]} > fichier_d_arrivée
eval rm -f o.{0..$n}
rm -f ${fic[@]}

ça pourrais servir à quelqu'un d'autre...

merci beaucoup pingouinux, je passe en [résolu]


Ubuntu 20.04.1 LTS (Focal Fossa) 64-bit .. MATE 1.24.0

Hors ligne

#6 Le 16/12/2018, à 08:48

pingouinux

Re : [résolu] afficher plusieurs lignes en colonnes

Il y aura une erreur si le dernier groupe contient moins de 4 fichiers.

Hors ligne