Ruby: как сопоставить двойную кавычку в регулярном выражении - PullRequest
2 голосов
/ 05 октября 2009

Я пытаюсь удалить некоторые символы двойных кавычек (") из текстового файла, используя линейку Ruby one, без особого успеха.

Я попробовал следующее и некоторые варианты безуспешно.

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

Это дает мне следующую ошибку:

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

Я запускаю Ruby на машине Win:

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

Есть идеи?

Ответы [ 4 ]

5 голосов
/ 05 октября 2009

Похоже на то, что cmd цитирует ад - обратите внимание, что одинарные кавычки не имеют смысла в оболочке cmd.

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

но это, вероятно, лучше:

ruby -pe "$_.delete!(34.chr)" < filename
1 голос
/ 05 октября 2009

Как насчет:

ruby -e 'puts $stdin.read.gsub(34.chr,"")' <myfile.txt
0 голосов
/ 05 октября 2009

Похоже, проблема в оболочке.

Ваше сообщение об ошибке от Ruby, поэтому кажется, что Ruby получает < в качестве аргумента. Это означает, что оболочка не выполняет перенаправления.

У меня нет под рукой Windows-машины, поэтому я бы дважды проверил, что вы перенаправляете в первую очередь При первом осмотре я думаю, что < myfile.txt должно быть <myfile.txt

0 голосов
/ 05 октября 2009
ruby -pe 'gsub(/\"/,"")' myfile.txt
...