Rubis:comment faire correspondre un guillemet double dans une expression rationnelle
Question
J'essaie de supprimer certains guillemets doubles (") d'un fichier texte à l'aide d'une doublure Ruby, avec peu de succès.
J'ai essayé ce qui suit, ainsi que quelques variantes, sans succès.
ruby -pe 'gsub(/\"/,"")' < myfile.txt
Cela me donne l'erreur suivante :
-e:1: Invalid argument - < (Errno::EINVAL)
J'utilise Ruby sur une machine Win :
ruby 1.8.6 (2007-09-24, niveau de correctif 111) [i386-mswin32]
Une idée?
La solution
On dirait que cmd cite l'enfer - notez que les guillemets simples n'ont aucun sens dans le shell cmd.
ruby -pe "gsub(34.chr,'')" < filename
mais c'est probablement mieux :
ruby -pe "$_.delete!(34.chr)" < filename
Autres conseils
Que diriez-vous:
ruby -e 'puts $stdin.read.gsub(34.chr,"")' <myfile.txt
ruby -pe 'gsub(/\"/,"")' myfile.txt
On dirait que le problème vient du shell.
Votre message d'erreur vient de Ruby, il semble donc que Ruby reçoive le <
comme argument.Cela signifie que le shell n'effectue aucune redirection.
Je n'ai pas de machine Windows à portée de main, je vérifierais donc d'abord que vous obtenez la bonne redirection.Lors de la première inspection, je pense que < myfile.txt
devrait être <myfile.txt