Accoler deux "blocs" de lignes qui se suivent

Résolu
jil -  
 jil -
Bonjour,

j'ai un fichier qui contient une ligne d'entête et ensuite N lignes, disons 8 pour l'exemple (N est forcément pair).

- les N/2 (4) lignes suivants la première contiennent des noms d'échantillons.

- les N/2 (4) qui suivent les précédentes, contiennent des valeurs calculées sur lesdits échantillons, dans le même ordre.

J'aimerai mettre ces lignes "à côté" des 4 précédentes.

Exemple concret, cat ~/fichier.txt :

Sample Indice1 Indice2 IndiceTotal 
A 
B 
C 
F 
1.456 2.45 3.699 
1.787 1.83 2.56 
1.98 1.503 4.550 
1.2 1.189 2.86 


et j'aimerai que ça devienne ça :
Sample Indice1 Indice2 IndiceTotal 
A 1.456 2.45 3.699 
B 1.787 1.83 2.56 
C 1.98 1.503 4.550 
F 1.2 1.189 2.86 


je tourne un peu en rond avec 'sed' mais peut-être qu'il y a mieux.
Remarque importante : un fichier peut comporter 8 lignes (sans l'entete) comme ici, mais un autre peut en contenir un nombre différent, 12, ou 18, ou 24, peu importe, il faudrait que ça puisse fonctionner dans tous les cas.

Merci de vos tuyaux.
ps : Je suis sous Ubuntu.

2 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    $ awk '{x[NR]=$0} END{print x[1] ; --NR;for(n=2;n<=NR/2+1;n++)print x[n], x[n+NR/2]}' fichier.txt
    Sample Indice1 Indice2 IndiceTotal 
    A  1.456 2.45 3.699 
    B  1.787 1.83 2.56 
    C  1.98 1.503 4.550 
    F  1.2 1.189 2.86 
    $
    0
  2. jil
     
    Fichtre.
    C'est du awk qui roule ça...

    $ awk '{x[NR]=$0} END{print x[1] ; --NR;for(n=2;n<=NR/2+1;n++)print x[n], x[n+NR/2]}' monfichier.txt > output.txt

    donne le résultat escompté, merci mille fois dubcek, t'es doué avec cette commande !
    0