我想一次读取一行文件,拆分列并将其保存在变量中。 文件看起来像这样:
%% cat Memory_minus.list
MEM_rf_2p_hce_1024x8_naxos1 RF dual_port 1024 8
MEM_rf_2p_hce_128x18_naxos1 RF dual_port 128 18
MEM_rf_2p_hce_16x128_fusion RF dual_port 16 128
MEM_rf_2p_hce_16x80_fusion4 RF dual_port 16 80
MEM_rf_2p_hce_256x18_naxos1 RF dual_port 256 18
MEM_rf_2p_hce_256x8_naxos1 RF dual_port 256 8
在一个foreach循环中(一行)我希望将所有5列转换为变量,例如对于第一行,每个变量应该返回以下。
puts $var1 ->>> MEM_rf_2p_hce_1024x8_naxos1
puts $var2 ->>> RF
puts $var3 ->>> dual_port
puts $var4 ->>> 1024
puts $var5 ->>> 8
我尝试编写代码来逐行读取文件然后提取项目但是没有用。
set f [open Memory_minus.list]
while {1} {
set line [gets $f]
if {[eof $f]} {
close $f
break
}
#set base_name [exec awk {{print $1}} $line ]
foreach lt $line {
puts $lt
}
}
$ lt返回整个加扰输出。
答案 0 :(得分:1)
set fp [open input.txt r]
while {[gets $fp line]!=-1} {
# To make sure that the line has five words
if {[llength $line]!=5} {
puts "Incorrect format in the line -> '$line'"
continue
}
foreach {var1 var2 var3 var4 var5} $line {
puts ->>>$var1;puts ->>>$var2;puts ->>>$var3;puts ->>>$var4;puts ->>>$var5;
}
}
close $fp
输出(仅显示第一行的输出)
->>>MEM_rf_2p_hce_1024x8_naxos1
->>>RF
->>>dual_port
->>>1024
->>>8