如何解决在命令行中使用Ruby,如何获取遍历每个循环的特定列
|| 我有一个返回以下内容的命令行脚本:col1 col2 col3 col4 col5
a b c d e
a1 b2 c2 d2 e2
a3 b3 c3 d3 e3
..
..
.
现在,我要从col3中获取值,然后为列3中的每一行调用另一个命令行脚本。
我知道ruby有一个system(\“ .. \”)函数,它将在控制台中运行脚本。
我的命令行脚本非常类似于调用以下内容:
system(\"ls -l\")
现在,我如何捕获第3列,并遍历每个值并触发另一个脚本,该脚本将col#3中的值作为参数传递?
解决方法
IO.popen(\'ls -l\').lines.map(&:split)[1..-1].transpose[2].each do |e|
puts \'>>\' + e + \'<<\'
end
我应该警告您,如果将其带到明显的下一步,并在块中构造对“ system”或什至popen
的调用,则会造成代码注入风险。在这种特定情况下,对于文件所有者而言,仅预期字母数字结果,仅对那些字符进行过滤就足够了。
, 你可以像
#!/usr/bin/env ruby
cols,take_col = ARGV[0],ARGV[1]
puts $stdin.read.split.drop(cols).select.with_index{|x,i| i % cols == take_col - 1}
在一个名为“ 5”的文件中,并与管道一起使用,例如
$ ls-like-cmd | take-col 5 3 | next-cmd
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。