2009-10-05 7 views
2

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

Я попытался следующие, и некоторые вариации, без успеха

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

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

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

Я рубинового на машине Win:

рубин 1.8.6 (2007-09-24 111 номера патчей) [i386-mswin32]

Любая идея?

+0

нужно больше данных: вы с помощью CMD оболочку? –

ответ

5

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

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

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

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

Оба они работают. Благодаря! –

+0

Это работает! должен быть принят? – Jirapong

+0

+1 для показа мне '34.chr' – cbmeeks

1

Как насчет:

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

Такая же ошибка, к сожалению. –

+0

Есть что-то с обратными косыми чертами и cmd.exe, которые не играют хорошо. –

+0

Новый пример, вероятно, работает только с ASCII-файлами. –

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

Это тоже не работает. Мне нужно «<», чтобы перенаправить ввод в скрипт. –

+0

Извините, но я не получил «перенаправление ввода на скрипт» – khelll

+0

Я имею в виду, что вход поступает из файла и что знак «<» используется для подачи сценария с этим файлом. Возможно, эти примеры могут объяснить это лучше: http://www.fepus.net/ruby1line.txt –

0

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

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

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

+0

Это, похоже, не является причиной. С неспецифическими символами он отлично работает. –