ruby无法添加unix内容
我的ruby puts因为某种原因卡住了我不知道为什么, 我通过backticks传递的命令是正确的,脚本在puts 2和puts 2命令之间卡住,因此它基本上不会退出包含unix sort/cut的puts命令 #!/usr/bin/ruby/ruby无法添加unix内容,ruby,stdout,Ruby,Stdout,我的ruby puts因为某种原因卡住了我不知道为什么, 我通过backticks传递的命令是正确的,脚本在puts 2和puts 2命令之间卡住,因此它基本上不会退出包含unix sort/cut的puts命令 #!/usr/bin/ruby/ require 'fileutils' @raw_file=File.open(ARGV[0],"r") unless File.open(ARGV[0],"r").nil? #agg_file=File.open(ARGV[1],"r") unle
require 'fileutils'
@raw_file=File.open(ARGV[0],"r") unless File.open(ARGV[0],"r").nil?
#agg_file=File.open(ARGV[1],"r") unless File.open(ARGV[1],"r").nil?
@pwd=Dir.pwd
puts @pwd
#do the raw file first
def do_raw
tmp_raw=File.new("#{@pwd}/tmp_raw","w")
#unix cut and sort
puts 1
tmp_raw.puts(`cat #{@raw_file} | cut -f1,6,3,4,2,5,9,12 | sort -k1,1 -k8,8`)
puts 2
tmp_raw.close
tmp_raw=File.open("#{@pwd}/tmp_raw","r")
final_file=File.new("#{@pwd}/uniques_raw","w")
#merge the lines and append count
vector =IO.readlines(@tmp_raw.path)[1]
count=1
while (line=tmp_raw.gets) do
if line.eql? vector
count=count+1
else
vector=line
final_file.write("#{line}\t#{count}")
count=1
end
end
#job done, close and clean file
tmp_raw.close
final_file.close
tmp_raw.remove
end
#run jobs
do_raw
但一个简单的例子是:
tmp_原始看跌期权(“blabla”)
工作正常,所以文件正常
puts命令卡住了,我在终端上尝试了这个简单的命令,它工作得很好,文件也存在,向其中写入一些随机文本也很好
有什么想法吗?我明白了
@raw_file
是一个文件
对象,而不是文件名本身。然后不能对文件
对象的字符串表示形式调用cat(1)
命令
你应该写信的
tmp_raw.puts(`cat #{ARGV[0]} | cut -f1,6,3,4,2,5,9,12 | sort -k1,1 -k8,8`)
我猜
tmp\u raw.close
可能会刷新内容?thx但不幸的是,它没有,它真的从来没有从puts命令中出现过,我添加了一个puts“2”命令,它从不打印…什么是@raw\u puts
。应该是@raw_file
很抱歉,这是我的错误复制粘贴,我已经修改了它,thx在修复变量名后,您是否仍然存在问题?因为这看起来确实是问题的根源。嗨,野垣,你是对的,谢谢!我已经用cat{@raw_file.path}解决了这个问题,谢谢你宝贵的建议!