Couper une ligne et la coller à la suite d'une autre
Résolu
Dan_NB
Messages postés
9
Statut
Membre
-
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18627 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 !
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 !
2 réponses
-
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
-
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). -
-
-
-
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 $