1

Tcl を使用してトランスクリプト コマンド (Questa sim) を使用するシミュレーターを使用しています。Unix で「cat」コマンドのようなファイル コンテンツをエコーし​​たいです。

tcl で 1 行のコマンドで実行できますか? ファイルの最初の 5 行だけを "cat" することは可能ですか?

4

3 に答える 3

4

一行で

puts [read [open data.dat r]]

または段階的に..

set handle [open data.dat r]
puts [read $handle]
close $handle
于 2013-10-08T06:54:30.573 に答える
2

ファイルを開いてその内容を標準出力にエコーするには (のようにcat)、次のようにします。

set f [open $filename]
fcopy $f stdout
close $f

最初の 5 行だけを実行するには (これは とまったく同じですhead -5)、次の手順を使用します。

proc head {filename {lineCount 5}} {
    set f [open $filename]
    for {set i 0} {$i < $lineCount} {incr i} {
        if {[gets $f line] >= 0} {
            puts $line
        }
    }
    close $f
}

行末を検出することは、単にバイトを送信することよりも複雑であるため、より多くの作業が必要になります。

于 2013-10-07T13:42:51.620 に答える
0

次のコードは、特定のファイルから一度に 5 行を読み取るためのものです。

#!/usr/bin/tclsh
set prev_count -1
set fp [open "input-file.txt" "r"]
set num_lines [split [read $fp] \n]
for {set i 4} {$i < [llength $num_lines]} { incr i 5} {
   set line_5 [lrange $num_lines [incr prev_count] $i ]
   set prev_count $i
   puts "$line_5\n\n"
}
于 2013-10-08T10:46:06.037 に答える