Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2749 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Shell] Sed : Remplacer un \ par \\ dans un path

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Shell] Sed : Remplacer un \ par \\ dans un path

n°1722692
haaawaaax
Posté le 23-04-2008 à 11:32:14  profilanswer
 

Bonjour,
 
Comme le titre l'indique, je dois remplacer le caractère anti-slash \  par 2 anti-slash \\
J'ai une chaine (présente dans un fichier a.txt) sous la forme :  r:\foo\foobar
j'aimerai la transformer sous la forme :  r:\\foo\\foobar
 
J'ai cherché dans la doc de sed, mais pour le caractère anti-slash , c'est ambigüe...  
j'ai testé les commandes suivantes sans résultats :
sed "s/\/\\/g" a.txt > b.txt
sed "s/[\]/[\\]/g" a.txt > b.txt
 
 Avez vous une idée sur comment lui faire prendre en compte les \  ?
 
 Merci de votre aide.   :jap:

mood
Publicité
Posté le 23-04-2008 à 11:32:14  profilanswer
 

n°1722702
chaica
Posté le 23-04-2008 à 11:51:14  profilanswer
 

$ cat fichier.txt
r:\foo\foobar
$ sed -e 's/\\/\\\\/g' fichier.txt
r:\\foo\\foobar


Message cité 1 fois
Message édité par chaica le 23-04-2008 à 13:50:57
n°1722712
haaawaaax
Posté le 23-04-2008 à 12:01:57  profilanswer
 

chaica a écrit :

$ cat fichier.txt  
r:\foo\foobar
carl@carl-bureau:~/progra/sed$ sed -e 's/\\/\\\\/g' fichier.txt  
r:\\foo\\foobar




 
 
Yeaaah merci bien !
Je pensai pas que l'option -e résoudrait le probleme !
 
Dans la doc que j'ai lu, l'option -e servait à indiquer que l'expression qui suit la premiere n'est pas un chemin de fichier mais bien une autre commande :  
 
sed 's/color/colour/g' 's/flavor/flavour/g' filename  
 
but it wouldn't work. sed would look for a file named "g" in the directory "s/flavor/flavour". The "-e" flag to sed makes it realize that the next option is a part of the script, instead of a filename.

 
En tout cas, merci beaucoup Chaica !  :jap:

n°1722779
chaica
Posté le 23-04-2008 à 13:50:07  profilanswer
 

$ sed 's/\\/\\\\/g' fichier.txt  
r:\\foo\\foobar


n°1722933
haaawaaax
Posté le 23-04-2008 à 15:55:30  profilanswer
 

Je crois avoir essayer cette méthode en vain... Mais en tout cas ,ta premiere réponse marche nickel !
 
J'ai une deuxieme question qui sort un peu du cadre là, mais voilà, je viens de terminier mon script, il passe sur un fichier qui compte pas loin de 8000 lignes, et il met pas loin de 2h pour effectuer tout mes traitements (dans une boucle, je fait appel à la fonction "echo" et "cut" ).
Est ce que si je passe mon script sous python ou perl, est ce que j'aurai de meilleures perfs ?  
 
 Merci.

n°1722937
Elmoricq
Modérateur
Posté le 23-04-2008 à 16:00:43  profilanswer
 

Sans hésitation : oui. Avec des différences de performances tres significatives, de l'ordre de plusieurs ordres de grandeur.


Message édité par Elmoricq le 23-04-2008 à 16:01:15
n°1722941
haaawaaax
Posté le 23-04-2008 à 16:04:12  profilanswer
 

Merci bien.  C'est donc décidé... GOTO Perl !
Merci pour tout. :jap:

n°1723663
matafan
Posté le 24-04-2008 à 14:35:32  profilanswer
 

A mon avis si tu met 2 heures pour 8000 ligne, le problème ce n'est pas vraiment le langage, c'est la façon dont tu as fais ton script. Je suppose que tu fais des operations qui demandent à chaque fois de lire le fichier en entier, ou des conneries dans ce genre.

n°1723943
haaawaaax
Posté le 24-04-2008 à 17:59:26  profilanswer
 

En fait non... Je ne lui demande pas de lire le fichier en entier à chaque passage de boucle.
Juste que dans la boucle qui parcour le fichier, pour chque ligne, je met en forme la ligne (cut, sed, echo) et j'ajoute cette ligne dans un autre fichier... et ca prend du temps.
Le meme algo sous perl et je divise le temps par 10. j'ai testé ca aujourdui.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Shell] Sed : Remplacer un \ par \\ dans un path

 

Sujets relatifs
Shell - tcsh[SHELL] Comment faire une tabulation dans un echo
utilisation de la commande awk dans un script shell@IP dans variable shell xp (cmd)
valeur absolue en shell?[shell] lire un fichier mais pas la première ni dernière ligne
Recupérer puis rechercher/remplacerCommande Shell et php
Utiliser une fonction du shell dans un programme C[Shell] Concaténation de variable
Plus de sujets relatifs à : [Shell] Sed : Remplacer un \ par \\ dans un path


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)