2

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

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

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

这给了我以下错误:

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

我在 Win 机器上运行 Ruby:

ruby 1.8.6 (2007-09-24 补丁级别 111) [i386-mswin32]

任何的想法?

4

4 回答 4

5

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

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

但这可能更好:

ruby -pe "$_.delete!(34.chr)" < filename
于 2009-10-05T14:48:49.780 回答
1

怎么样:

ruby -e 'puts $stdin.read.gsub(34.chr,"")' <myfile.txt
于 2009-10-05T13:56:42.423 回答
0
ruby -pe 'gsub(/\"/,"")' myfile.txt
于 2009-10-05T13:59:55.087 回答
0

听起来问题出在外壳上。

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

我手边没有 Windows 机器,所以我会仔细检查您是否首先获得了正确的重定向。在第一次检查时,我认为< myfile.txt应该是<myfile.txt

于 2009-10-05T14:26:48.247 回答