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

Résolu/Fermé
Dan_NB Messages postés 9 Date d'inscription jeudi 15 août 2013 Statut Membre Dernière intervention 17 août 2013 - 15 août 2013 à 20:26
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 16 août 2013 à 08:43
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
15 août 2013 à 20:48
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 jeudi 15 août 2013 Statut Membre Dernière intervention 17 août 2013
Modifié par Dan_NB le 15/08/2013 à 21:27
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
15 août 2013 à 21:38
$ 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 jeudi 15 août 2013 Statut Membre Dernière intervention 17 août 2013
15 août 2013 à 22:20
Merci beaucoup !
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
16 août 2013 à 08:43
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