我有一个输入文件名为“ input.dat”,其值为:
7 0 9 9 0 2 2 1 3 4 4 6 5 7 5 6
我想通过使用Tcl脚本将其转换为列表来从第2列中添加/减去任何数字。我编写了如下的Tcl脚本:
set input [open "input.dat" r]
set data [read $input]
set values [list]
foreach line [split $data \n] {
if {$line eq ""} {break}
lappend values [lindex [split $line " "] 1]
}
puts "$values-2"
close $input
但是输出结果是:0 9 2 1 4 6 7 6-2
有人可以帮助我,如何解决此问题?或脚本中的错误是什么?如果有人可以帮助我编写正确的脚本,这也很有帮助。
答案 0 :(得分:1)
我仍然不确定100%想要什么,但是这些选项似乎都可以通过lmap
命令解决,该命令用于对列表的每个元素进行操作。
以下是将每个元素与-2
连接的方法:
set values [lmap val $values {
string cat $val "-2"
}]
以下是从每个元素中减去2的方法:
set values [lmap val $values {
expr {$val - 2}
}]