Рубин:как сопоставить двойные кавычки в регулярном выражении
Вопрос
Я пытаюсь удалить некоторые символы двойных кавычек (") из текстового файла, используя Ruby one liner, но без особого успеха.
Я пробовал следующее и некоторые вариации, но безуспешно.
ruby -pe 'gsub(/\"/,"")' < myfile.txt
Это выдает мне следующую ошибку:
-e:1: Invalid argument - < (Errno::EINVAL)
Я запускаю Ruby на компьютере Win:
ruby 1.8.6 (2007-09-24, уровень исправления 111) [i386-mswin32]
Есть какие-нибудь идеи?
Решение
Похоже, что cmd цитирует hell - обратите внимание, что одинарные кавычки не имеют смысла в командной оболочке.
ruby -pe "gsub(34.chr,'')" < filename
но так, наверное, лучше:
ruby -pe "$_.delete!(34.chr)" < filename
Другие советы
Как насчет:
ruby -e 'puts $stdin.read.gsub(34.chr,"")' <myfile.txt
ruby -pe 'gsub(/\"/,"")' myfile.txt
Похоже, проблема в оболочке.
Ваше сообщение об ошибке от Ruby, так что, похоже, Ruby получает <
в качестве аргумента.Это означает, что оболочка не выполняет никакого перенаправления.
У меня нет под рукой компьютера с Windows, поэтому я бы сначала перепроверил, правильно ли вы выполняете перенаправление.При первом осмотре я думаю, что < myfile.txt
должно быть <myfile.txt