我正在试图使用此代码但不能正常工作
ruby -a -F';' -ne if $F[2]<4 'puts $F[3]' ppp.txt
这是我的档案
mmm;2;nsfnjd
sadjjasjnsd;6;gdhjsd
gsduhdssdj;3;gsdhjhjsd
做什么请帮帮我
答案 0 :(得分:1)
首先,不要像对某种花哨的Perl那样对待Ruby并编写这样的脚本,为了清楚起见,我们将它扩展为Ruby代码等价物:
$; = ';'
while gets
$F = $_.split
if $F[2]<4
puts $F[3]
end
end
您的原始代码不起作用,因为它不是有效的Ruby代码而无法工作,而且,您没有正确引用它来通过-e
评估术语。试着运行它我得到:
-bash: 4: No such file or directory
你也假设数组是1索引的,但事实并非如此。它是0索引的。此外,Ruby将整数值视为与字符串完全不同,从不等效,不自动转换。因此,您需要致电.to_i
进行转换。
这是一个重写程序,可以完成这项任务:
File.open(ARGV[0]) do |fi|
fi.readlines.each do |line|
parts = line.chomp.split(';')
if parts[1].to_i < 4
puts parts[2]
end
end
end
答案 1 :(得分:-1)
我用这个解决了
ruby -a -F';' -ne ' if $F[1] < "4" ;puts $F[2] end ' ppp.txt