problème avec sed

Bonjour,

Je dispose d’un fichier contenant 2 colonnes avec des chiffres, j’aimerais rajouter une ligne au dessus de chaque colonne avec du texte, il me semble que c’est possible avec sed? non?

J’ai essayé ça:

sans résultats…

voila mon fichier:

4,56600000e-03 -5,60000000e+00 4,56800000e-03 -5,60000000e+00 4,57000000e-03 -5,60000000e+00 4,57200000e-03 -5,60000000e+00 4,57400000e-03 -5,52000000e+00 4,57600000e-03 -5,52000000e+00 4,57800000e-03 -5,60000000e+00 4,58000000e-03 -5,52000000e+00 4,58200000e-03 -5,52000000e+00 4,58400000e-03 -5,52000000e+00 4,58600000e-03 -5,52000000e+00 4,58800000e-03 -5,52000000e+00 4,59000000e-03 -5,52000000e+00 4,59200000e-03 -5,44000000e+00 4,59400000e-03 -5,44000000e+00 4,59600000e-03 -5,44000000e+00 4,59800000e-03 -5,44000000e+00 4,60000000e-03 -5,44000000e+00 4,60200000e-03 -5,44000000e+00 4,60400000e-03 -5,36000000e+00 4,60600000e-03 -5,44000000e+00

En fait j’aimerais rajouter “t” au dessus de la première colonne et “CH1” au-dessus de la deuxième.

Merci

Bizarre d’utiliser sed pour ça… avec awk :

Ok, merci de vos réponses!

En fait je viens de comprendre pourquoi ma commande “ne marchait pas”… En réalité c’est moi qui suis un boulet car mon fichier comportait trop de données et cat ne m’affichait pas le début!! :blush:

Donc ça marche bien aussi avec sed!

Ceci dit, j’ai une autre question je dispose d’un autre fichier “fichier2” du type:

7.36000000e+00 7.36000000e+00 7.36000000e+00 7.36000000e+00 7.36000000e+00 7.44000000e+00 7.36000000e+00 7.36000000e+00 7.36000000e+00 7.36000000e+00 7.36000000e+00 7.36000000e+00 7.36000000e+00 7.44000000e+00 7.36000000e+00 7.36000000e+00 7.36000000e+00 7.36000000e+00 7.36000000e+00 7.36000000e+00

Et j’aimerais insérer cette colonne à coté des deux premières dans le fichier “fichier”. Comment puis-je faire?

Merci

Salut matt :slightly_smiling:

Alors tu te souviens encore de ce bon vieux shell ^^

[quote=“totola”]Ok, merci de vos réponses!

En fait je viens de comprendre pourquoi ma commande “ne marchait pas”… En réalité c’est moi qui suis un boulet car mon fichier comportait trop de données et cat ne m’affichait pas le début!! :blush: [/quote]
Je doute que ce soit cat, je pense plutôt que c’est ton émulateur de terminal.

Oui et je viens de comprendre pouquoi :slightly_smiling:

[quote=“totola”]Ceci dit, j’ai une autre question je dispose d’un autre fichier “fichier2” du type:

7.36000000e+00 7.36000000e+00 7.36000000e+00 7.36000000e+00 7.36000000e+00 7.44000000e+00 7.36000000e+00 7.36000000e+00 7.36000000e+00 7.36000000e+00 7.36000000e+00 7.36000000e+00 7.36000000e+00 7.44000000e+00 7.36000000e+00 7.36000000e+00 7.36000000e+00 7.36000000e+00 7.36000000e+00 7.36000000e+00

Et j’aimerais insérer cette colonne à coté des deux premières dans le fichier “fichier”. Comment puis-je faire?

Merci[/quote]
Tu a besoin de répéter l’action plusieurs fois ?
Parce que c’est pas agréable à faire en uniligne, faudrait faire un script. Mais si tu n’a qu’une fois à le faire :
[ul][li]tu ouvre ton premier fichier avec vim[/li]
[li]:$<cr>:r<nom-de-ton-second-fichier><cr>V20x:1<cr>$<C-v>20<cr>p[/li][/ul]
Alors il faut remplacer les par entré et c’est Ctrl+v. Pour l’explication :
[ul][li]:$<cr> se placer sur la dernière ligne ;[/li]
[li]:r<nom-de-ton-second-fichier><cr>ajouter ton second fichier à la fin du premier[/li]
[li]V20xcouper les 20 prochaines lignes[/li]
[li]:1<cr>se placer sur la première ligne[/li]
[li]$se placer sur le dernier caractère[/li]
[li]<C-v>20<cr>effectuer une sélection carré sur le dernier caractère des 20 prochaines lignes[/li]
[li]pcoller le contenu de ton buffer[/li][/ul]

Tu peut lancer vim en mode non-interactif pour l’utiliser comme un script.

(il doit y avoir un moyen de copier directement le contenu d’un fichier dans un buffer, mais j’ai pas cherché la commande).

Ben oui, justement j’aurais besoin de l’intégrer dans un script pour le faire de façon systématique…

PS: Ce sont des fichiers avec environ 2500 lignes

[quote=“MisterFreez”]Salut matt :slightly_smiling: [quote=“mattotop”]echo -e "t\tCH1" | cat - fichier > fichier[/quote]Alors tu te souviens encore de ce bon vieux shell ^^[/quote]Yo freeze !
Le shell, c’est comme le vélo, ça ne s’oublie pas :wink:

quote="totola"
Et j’aimerais insérer cette colonne à coté des deux premières dans le fichier “fichier”. Comment puis-je faire?

Merci[/quote]man paste

Ok, merci, en effet, c’était la bonne piste!

et ça marche!

Bon, en effet ça marche mais la troisième colonne est rajoutée avec une tabulation d’écart alors que j’aimerais juste un espace…

il doit y avoir un truc avec l’option paste -d mais j’ai pas bien compris l’histoire avec la liste des délimiteurs?

-d, --delimiters liste_delimiteurs Utiliser successivement les caractères de la liste_de_délimiteurs plutôt que les Tabulations pour séparer les lignes regroupées. Quand liste_délimiteurs est épuisée, reprendre au début de la liste.

Si je fais juste paste -d fichier1 fichier2 > fichier3 ça suffit?

Merci

Ok, trouvé:

Bonjour,

en fait, au risque d’être un peu embêtant, je souhaiterais maintenant convertir les espaces séparant chaque colonne en tabulation (c’est plus pratique pour les tableurs que je veux utiliser…). J’ai trouvé la commande unexpand qui devrait fonctionner, mais d’après ce que j’ai lu ce n’est que pour les espaces doubles…

Concrètement j’ai un fichier du type:

1 2 3 4 5 6 7 8 9
et j’aimerais:

1 2 3 4 5 6 7 8 9

Au passage, j’ai un espace en début de chaque ligne que j’aimerais bien supprimer…

Merci de votre aide!

Sed est ton ami :

Super, merci!