Ruby:如何匹配正则表达式中的双引号

时间:2009-10-05 13:46:01

标签: ruby regex escaping gsub

我正在尝试使用Ruby one liner从文本文件中删除一些双引号(“)字符,但收效甚微。

我尝试了以下内容和一些变体,但没有成功。

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

这给了我以下错误:

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

我在Win机器上运行Ruby:

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

有什么想法吗?

4 个答案:

答案 0 :(得分:5)

看起来cmd引用地狱 - 请注意单引号在cmd shell中没有意义。

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

但这可能更好:

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

答案 1 :(得分:1)

怎么样:

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

听起来像是shell的问题。

您的错误消息来自Ruby,因此Ruby似乎正在接收<作为参数。这意味着shell没有进行任何重定向。

我没有方便的Windows机器,所以我会仔细检查你是否正确地获得了重定向。在第一次检查时,我认为< myfile.txt应为<myfile.txt