2009-10-05 54 views
2

匹配一个双引号我试图使用Ruby的一个班轮一个文本文件中删除一些双引号(“)字符,但收效甚微红宝石:如何在正则表达式

我曾尝试以下,和一些变化,但没有成功

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

这给了我下面的错误:

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

我一个双赢的机器上运行的Ruby:

红宝石1.8.6(2007-09-24 PATCHLEVEL 111)[I386-mswin32]

任何想法?

+0

需要更多数据:您使用的是CMD的壳呢? – 2009-10-05 14:41:00

回答

5

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

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

但是这可能会更好:

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

他们都工作。谢谢! – 2009-10-05 15:07:17

+0

这个工程!必须得到接受吗? – Jirapong 2009-10-05 16:47:49

+0

+1显示我'34.chr' – cbmeeks 2012-03-21 23:19:22

1

关于如何:

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

不幸的是,同样的错误。 – 2009-10-05 13:59:55

+0

反斜杠和cmd.exe的表现不佳。 – 2009-10-05 14:08:25

+0

新的例子可能只适用于ASCII文件。 – 2009-10-05 14:09:10

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

这也行不通。我需要“<”将输入重定向到脚本。 – 2009-10-05 14:06:38

+0

对不起,但我没有“将输入重定向到脚本” – khelll 2009-10-05 14:20:32

+0

我的意思是输入来自文件,并且使用“<”符号来为该文件提供脚本。也许这些例子可以更好地解释它:http://www.fepus.net/ruby1line.txt – 2009-10-05 14:29:43

0

听起来像问题是与外壳。

你的错误信息来自Ruby,所以Ruby似乎收到了<作为参数。这意味着外壳没有做任何重定向。

我没有一台Windows机器,所以我会仔细检查一下你是否得到了重定向。在第一次检查时,我认为< myfile.txt应该是<myfile.txt

+0

这似乎不是原因。用非特殊字符它可以正常工作。 – 2009-10-05 14:39:43