Tcl echo文件内容到transcript

时间:2013-10-07 11:25:40

标签: tcl cat

我正在使用一些使用Tcl进行成绩单命令的模拟器(Questa sim) 我想在unix中回显像“cat”命令这样的文件内容。

可以在tcl的一行命令中完成吗?是不是可以“cat”只是文件的第5行

3 个答案:

答案 0 :(得分:2)

要打开文件并将其内容回显到标准输出(就像cat),请执行以下操作:

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

要完成前五行(就像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
}

这需要更多的工作,因为检测行结尾比传输字节更复杂。

答案 1 :(得分:2)

在一行

puts [read [open data.dat r]]

或一步一步..

set handle [open data.dat r]
puts [read $handle]
close $handle

答案 2 :(得分: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"
}