我正在使用一些使用Tcl进行成绩单命令的模拟器(Questa sim) 我想在unix中回显像“cat”命令这样的文件内容。
可以在tcl的一行命令中完成吗?是不是可以“cat”只是文件的第5行
答案 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"
}