Bonjour à vous.
Je viens de découvrir Sed grace à Cygwin, ( et oui honte à moi je suis sous windows... )
Je tente veinement d'utiliser Sed pour modifier un fichier texte, sans résultat, c'est pourquoi je lance un appel au secours auprés de vous !
Voila, mon Txt ressemble à cela :
#1#"05/04/2007"#"14:15"#"Test"#1#358#63
#1#"05/07/2007"#"17:30"#"Test2"#1#358#63
etc etc..
Donc je tente de faire en sorte que Sed me remplace les # par des & et supprime les "", et je n'y arrive pas ! :(
Est ce car je suis sous Windows ? Faut t'il que j'utilise d'autres commandes ?
J'aimerai simplement avoir mon txt de base, et un txt modifié ou ma chaine de caractéres serai comme ça :
&1&05/04/2007&14:15&Test&1&358&63
&1&05/04/2007&17:30&Test2&1&358&63
au secours ! :)
A l'avance merci!
# Tes tentatives ?
Posté par zephred . Évalué à 1.
[^] # Re: Tes tentatives ?
Posté par neokosha . Évalué à 1.
sed 's/#/&/g
pour le remplacement, puis ensuite avec /\#/\&/ puisque j'ai cru comprendre qu'il reconnaissait pas les caractéres...enfin bref j'ai vite déchanté ...
[^] # Re: Tes tentatives ?
Posté par Lol Zimmerli (site web personnel, Mastodon) . Évalué à 2.
La gelée de coings est une chose à ne pas avaler de travers.
# Ptet ça...
Posté par GCN (site web personnel) . Évalué à 2.
$ cat file.txt
#1#"05/04/2007"#"14:15"#"Test"#1#358#63
#1#"05/07/2007"#"17:30"#"Test2"#1#358#63
$ sed -i file.txt -e 's/#/\&/g' -e 's/"//g'
$ cat file.txt
&1&05/04/2007&14:15&Test&1&358&63
&1&05/07/2007&17:30&Test2&1&358&63
Dans tous les cas, mieux vaut bosser sur une copie de ton fichier avant d'utiliser "sed -i", ça évitera les mauvaises surprises :).
[^] # Re: Ptet ça...
Posté par NeoX . Évalué à 1.
cat infile.txt | sed -e 's/#/\&/g' -e 's/"//g' >outfile.txt
[^] # Re: Ptet ça...
Posté par neokosha . Évalué à 1.
[^] # Re: Ptet ça...
Posté par peck (site web personnel) . Évalué à 2.
# Youpi !
Posté par neokosha . Évalué à 1.
Je n'y arrivais pas tout simplement parce-que je ne mettais pas le nom de mon fichier au bon endroit ....
sed -e 's/#/\&=/g' -e 's/"//g' fichier.txt>fichier2.txt
Maintenant je vais tenter d'automatiser la tache en boucle toutes les x secondes, j'ai commencer a faire un script, sans succés évidemment :p
#! /bin/bash
cd c:\
sed -e 's/#/\&=/g' -e 's/"//g' fichier.txt>fichier2.txt
Bien sur rien ne se passe...
Je suis hors piste ou je suis sur la bonne voie svp ?
Merci pour votre aide.
[^] # Re: Youpi !
Posté par bob6 . Évalué à 1.
1) Pour remplacer un caractère par un autre tu peux utiliser la commande 'y' au lieu de 's'. Malheureusement, on ne peut pas utiliser 'y' pour éliminer un caractère comme on le ferait avec perl.
2) Mieux vaut enchaîner les commandes sed avec un ';' plutôt que de donner plusieurs commandes. Ce n'est pas toujours vrai, mais dans ton cas ça l'est.
3) Si ça ne t'intéresse pas de conserver la forme originale de ton fichier ,tu peux demander à sed d'effectuer ses remplacements directement dans ton fichier source avec l'option '-i'.
En compilant ces trois remarques, ça donne:
sed -i -e 'y/#/&/;s/"//g' toto
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.