我是tcl脚本的新手。
我的CSV文件中有2列。
示例:My data
A 12
D 18
B 33
A 11
D 49
我想使用第1列数据提取第2列的值。
所需输出:
A: 12,11
B: 33
D: 18, 49
有人能帮我写一个tcl脚本来执行这个任务吗?提前谢谢你。
这是一个众所周知的问题,Tcl的dict lappend
正是您需要解决它的工具(与tcllib中的csv::split
一起对输入数据进行解析)。
package require csv
# Read split and collect
set data {}
while {[gets stdin line] >= 0} {
lassign [csv::split $line] key value; # You might need to configure this
dict lappend data $key $value
}
# Write out
puts ""; # Blank header line
dict for {key values} $data {
puts [format "%s: %s" $key [join $values ", "]]
}
上面的代码被写成标准输入到标准输出的过滤器。适应与文件一起工作是一个练习。