关闭。这个问题是基于意见的。它目前不接受答案。
<hr class=“my12大纲无baw0 bb bc-POWER-400”/
想改进这个问题吗?编辑这篇文章,更新这个问题,以便用事实和引文来回答。
去年关闭了
改进这个问题
我想用Ruby处理命令行输入:
>;cat input.txt | myprog.rb
>;myprog.rb<;input.txt
>;myprog.rb arg1 arg2 arg3。。。
最好的方法是什么?特别是我想处理blank STDIN,我希望有一个优雅的解决方案
#!/usr/bin/env ruby
STDIN.read.split(“\n”)。每个都有一个|
提出
终止
ARGV.每个do | b|
放b
终止
以下是我在自己收藏的晦涩的Ruby中发现的一些东西
因此,在Ruby中,Unix命令cat的一个简单的无铃实现是:
#!/usr/bin/env ruby
读取ARGF
ARGF在输入方面是您的朋友;它是一个虚拟文件,从命名文件或STDIN获取所有输入
ARGF.each_with_index do|line,idx|
打印ARGF.filename,idx,第行
终止
#打印通过包含登录名的命令行传递的每个文件中的所有行
ARGF.每个do |行|
如果line=~/login,则放置第行/
终止
谢天谢地,我们没有得到Ruby中的菱形操作符,但是我们确实得到了 ARGF 作为替换。虽然晦涩难懂,但它实际上是有用的。考虑这个程序,它在命令行中提到的每个文件中都准备好了版权标题(感谢另一个Primm, -I/COD>):
#!/usr/bin/env ruby-i
Header=DATA.read
ARGF.每条线都有|
如果ARGF.pos-e.length==0,则放入标题
放e
终止
__结束__
#--
#版权所有(C)2007 Fancypants公司。
#++
归功于:
- https://web.archive.org/web/20080725055721/http://www.oreillynet.com/ruby/blog/2007/04/trivial_scripting_with_ruby.html#comment-565558
- http://blog.nicksieger.com/articles/2007/10/06/obscure-and-ugly-perlisms-in-ruby