我想在终端
中做这样的事情$ ruby quicksort.rb unsorted.txt
quicksort.rb
是我要运行的ruby文件unsorted.txt
是包含未排序数字的输入文件。是否有可能在ruby中做这样的事情?
谢谢。
答案 0 :(得分:3)
ARGF
使这项任务变得简单,几乎和Perl的<>
运算符一样简单:
$ cat quicksort.rb
#!/usr/bin/ruby
ARGF.each do |line|
puts line
end
$ ruby quicksort.rb /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
...
您可能希望为此extremely helpful quick guide to Ruby IO添加书签。
答案 1 :(得分:3)
您可以阅读命令行参数并执行文件操作。读取你可以使用的参数
ARGV.each do|a|
puts "Argument: #{a}"
end
这样您就可以获取文件名并获取内容。
答案 2 :(得分:2)
对于参数,请使用argv
ARGV.each do|file|
file
end
然后你可以阅读文件的内容:
f = File.open(file, File::RDONLY)
答案 3 :(得分:1)
虽然我喜欢在Ruby中解决问题,但我想指出:
> sort unsorted.txt > sorted.txt
如果你有一个体面的(* nix)命令行。但也许你想做的不仅仅是排序?
答案 4 :(得分:1)
只需阅读标准版,shell就可以轻松完成:
#!/usr/bin/env ruby
puts $stdin.read.reverse
然后使用“&lt;”将包含“foobar”的bar.txt文件的内容转发到您的程序中。
$ ruby foo.rb < bar.txt
raboof
与您想要做的更匹配的另一个解决方案是:
#!/usr/bin/env ruby
puts IO.read(ARGV[0]).reverse
运行它:
$ ruby foo.rb bar.txt
raboof