2011-12-22 91 views

回答

3

您可以阅读命令行参数并执行文件操作。读取您可以使用的参数

ARGV.each do|a| 
    puts "Argument: #{a}" 
end 

这样您就可以获取文件名并获取内容。

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

2

对于参数,使用的argv

ARGV.each do|file| 
file 
end 

然后你就可以读取文件的内容:

f = File.open(file, File::RDONLY) 
1

虽然我喜欢在Ruby中解决的东西,我只是想指出:

> sort unsorted.txt > sorted.txt 

如果你有一个像样的(* nix)命令行。但也许你想做的不仅仅是排序?

1

在标准刚看完,外壳可以很容易地为你做这个:

#!/usr/bin/env ruby 
puts $stdin.read.reverse 

然后使用“<”转发包含“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 
相关问题