2017-04-21 32 views
0

林triying使用此代碼,但不能正常工作如果列小於4列第3列如何紅寶石?

ruby -a -F';' -ne if $F[2]<4 'puts $F[3]' ppp.txt 

這是我的文件

mmm;2;nsfnjd 
sadjjasjnsd;6;gdhjsd 
gsduhdssdj;3;gsdhjhjsd 

什麼是做撥錯請幫我

回答

1
解決

首先,不要把Ruby當成某種奇特的Perl和Perl編寫腳本這樣,我們就擴大到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 
+0

非常三江源。 – zzero

-1

我這個

ruby -a -F';' -ne ' if $F[1] < "4" ;puts $F[2] end ' ppp.txt