2009-10-05 13 views
2

Je suis en train de supprimer quelques guillemets (") caractères à partir d'un fichier texte à l'aide d'un Ruby une doublure,Ruby:. Comment faire correspondre un guillemet dans une expression rationnelle

avec peu de succès, je l'ai essayé ce qui suit, et quelques variations, sans succès

ruby -pe 'gsub(/\"/,"")' < myfile.txt 

Cela me donne l'erreur suivante:.

-e:1: Invalid argument - < (Errno::EINVAL) 

Je courais Ruby sur une machine Win:

rubis 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]

Toute idée?

+0

Besoin plus de données: vous utilisez le shell cmd? –

Répondre

5

On dirait que cmd cite hell - notez que les guillemets simples n'ont aucun sens dans le shell cmd.

ruby -pe "gsub(34.chr,'')" < filename 

mais cela est probablement mieux:

ruby -pe "$_.delete!(34.chr)" < filename 
+0

Ils travaillent tous les deux. Merci! –

+0

Cela fonctionne! doit être accepter? – Jirapong

+0

+1 pour me montrer '34.chr' – cbmeeks

1

Que diriez-vous:

ruby -e 'puts $stdin.read.gsub(34.chr,"")' <myfile.txt 
+0

Même erreur, malheureusement. –

+0

Il y a quelque chose avec les barres obliques inverses et cmd.exe qui ne joue pas bien. –

+0

Le nouvel exemple ne fonctionne probablement que pour les fichiers ASCII. –

0
ruby -pe 'gsub(/\"/,"")' myfile.txt 
+0

Cela ne fonctionne pas non plus. J'ai besoin de "<" pour rediriger l'entrée vers le script. –

+0

Désolé mais je n'ai pas eu "rediriger l'entrée vers le script" – khelll

+0

Ce que je veux dire, c'est que l'entrée provient d'un fichier et que le signe "<" est utilisé pour alimenter le script avec ce fichier. Peut-être que ces exemples peuvent l'expliquer mieux: http://www.fepus.net/ruby1line.txt –

0

sons comme le problème est avec la coquille. Votre message d'erreur provient de Ruby, il semble donc que Ruby reçoive le < en tant qu'argument. Cela signifie que le shell ne fait aucune redirection.

Je n'ai pas de machine Windows à portée de main, donc je vérifie d'abord que la redirection est correcte. À la première inspection, je pense que le < myfile.txt devrait être <myfile.txt

+0

Cela ne semble pas être la cause. Avec des caractères non spéciaux, cela fonctionne bien. –