我正在使用一些将 Tcl 用于脚本命令的模拟器(Questa sim)我想在 unix 中回显文件内容,如“cat”命令。
可以在 tcl 的一行命令中完成吗?是否有可能只“cat”文件的前 5 行
在一行中
puts [read [open data.dat r]]
或者一步一步..
set handle [open data.dat r]
puts [read $handle]
close $handle
要打开文件并将其内容回显到标准输出(就像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
}
它需要更多的工作,因为检测行尾比仅仅发送字节更复杂。
这是以下代码,一次从给定文件中读取 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"
}