Couper une ligne et la coller à la suite d'une autre

Résolu
Dan_NB Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je dois modifier l'output d'un programme qui est assez volumineux pour pouvoir lire les données qui m'intéresse plus facilement. Il s'agit d'un fichier texte que je manipule à l'aide d'un scriptshell (commande bash).

J'aimerais pouvoir couper une ligne et la placer à la suite de la première ligne de mon fichier ou la 2ième ligne de mon fichier (selon les cas). Voici un exemple :

A B C
1 2 3
D E F
4 5 6
G H I
7 8 9

deviendrait

A B C D E F G H I
1 2 3 4 5 6 7 8 9

Auriez vous, une idée sur la commande à utiliser et les regexp nécessaire ?
Merci d'avance pour votre aide !




A voir également:

2 réponses

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut,

En se basant sur l'exemple donné, je m'excuse mais le "selon les cas" est trop vague.

$ cat plop 
A B C
1 2 3
D E F
4 5 6
G H I
7 8 9

$ cat script.sed 
#n
1 h                                    
n                                      
:z                                     
x                                      
N                                      
$ !b z                                 
s/\n/ /g                               
x                                      
s/\n/ /g                               
G                                      
p                                      

$ sed -f script.sed plop 
A B C D E F G H I
1 2 3 4 5 6 7 8 9

2
Dan_NB Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Oui effectivement je suis assez vague dans mes cas. En fait on considère la ligne 1 et 2. Et on colle les lignes suivantes (3,4,...) alternativement à la suite de la ligne 1 et de la ligne 2. Donc ligne 3 va à la suite de ligne 1, ligne 4 à la suite de ligne 2, ligne 5 à la suite de ligne 1 etc...

J'ai testé ton script et il fonctionne comme je veux ! Merci beaucoup (et aussi merci pour la rapidité de ta réponse).

Une dernière question : comment fait-on pour supprimer la première colonne de mon fichier sauf l'élément de la première ligne ? ex :

A B C
1 2 3
D E F

devient

A B C
2 3
E F

Avec awk j'arrive à supprimer tout la première colone mais pas à conserver l'élément (1,1).
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
$ cat plop 
A B C
1 2 3
D E F
4 5 6
G H I
7 8 9

$ sed '1! s/^[^ ]* //' plop 
A B C
2 3
E F
5 6
H I
8 9
0
Dan_NB Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup !
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
Avec awk j'arrive à supprimer tout la première colone mais pas à conserver l'élément (1,1).
$ awk 'NR>1 {$1=""; sub(OFS, "")} {print}' fichier
A B C
2 3
E F
$ 
0