2016-12-27 5 views
0

行3の行を最終行または最大行[expr max_line - 3]から取得するには、以下のコードを記述していますが、行3または行末から取得できません。ファイルを取得する

set idx 0 
while {![eof $flopen]} { 
    gets $flopen line 
    puts $line 
    set vlist [split $line " "] 
    set vle [string trim [lindex $vlist 0]] 
    if {$vle == "STP"} { 
    set dtxid [string trim [lindex $value_list 1]] 
    set dtid [string trim [lindex $value_list 4]] 
    gets $flopen line 
    gets $flopen line 
    gets $flopen line 
    set line [join $line ","] 
    set tglist($idx) $dtxid 
    set gslist($idx) $dtid 
    set atblist($idx) $line 

    set data_end_from_max_line $datax ;# Can set the string here [expr $max_line - 3] 

    incr idx 
} 
} 

答えて

1

この種のものを行うとき、最も簡単な方法(データを提供したがあまり大きくないので、百メガバイトのカップルよりも多くが)としてTclの内部でそれにとプロセスすべてをロードすることはありません行のリスト。

set lines [split [read $flopen] "\n"] 
set particularLine [lindex $lines end-3] 
+0

これは完璧ですが、ファイルを再オープンする必要がありますか?私はそれがラインでそれを得ることができることを意味しますか? – Andre

+0

ファイルの末尾から数えているので、リストの最後に偽の空の要素がないようにします。より良い '' set lines [split [read -nonewline $ flopen] \ n] ' –

関連する問題