我正在尝试使用 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]
任何的想法?
看起来像 cmd 引用地狱——注意单引号在 cmd shell 中是没有意义的。
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 似乎正在接收<
作为参数。这意味着 shell 没有进行任何重定向。
我手边没有 Windows 机器,所以我会仔细检查您是否首先获得了正确的重定向。在第一次检查时,我认为< myfile.txt
应该是<myfile.txt