space 的 TCL 输出
TCL output with space
我有 5 个不同的变量来自不同的 if 和循环语句,当我使用 "put" 将输出输出到文本文件时,所有字符和数字都是这样的:alphaclass112098voip
。其中
variables: name = alpha
category = class1
number = 12098
service = voip
我希望文件中的输出像这样,同一行有空格。
Alpha class1 12098 voip
Beta class1 12093 DHCP SIP
另外在某些时候我想通过分隔符以备将来使用。
处理这个问题的最简单方法是构造一个表示记录的 Tcl 列表。您可以使用 lappend
零碎地执行此操作,也可以使用 list
一次完成此操作。或者混合使用。
foreach name $names category $categories number $numbers service $services {
set record [list $name $category]
lappend record $number
lappend record $service
puts $record
}
这以 Tcl 认为易于解析的格式显示每一行的记录(如果您的名称中包含 space,您就会明白我的意思)。要使用分隔符来分隔值,join
命令非常有用:
puts [join $record $delimiter]
默认分隔符是 space,但请尝试使用 :
以查看其工作原理。
如果您要生成 CSV 文件,请使用 Tcllib 中的 csv
package。它为您处理棘手的边缘情况(例如,嵌入的逗号)。
我有 5 个不同的变量来自不同的 if 和循环语句,当我使用 "put" 将输出输出到文本文件时,所有字符和数字都是这样的:alphaclass112098voip
。其中
variables: name = alpha
category = class1
number = 12098
service = voip
我希望文件中的输出像这样,同一行有空格。
Alpha class1 12098 voip
Beta class1 12093 DHCP SIP
另外在某些时候我想通过分隔符以备将来使用。
处理这个问题的最简单方法是构造一个表示记录的 Tcl 列表。您可以使用 lappend
零碎地执行此操作,也可以使用 list
一次完成此操作。或者混合使用。
foreach name $names category $categories number $numbers service $services {
set record [list $name $category]
lappend record $number
lappend record $service
puts $record
}
这以 Tcl 认为易于解析的格式显示每一行的记录(如果您的名称中包含 space,您就会明白我的意思)。要使用分隔符来分隔值,join
命令非常有用:
puts [join $record $delimiter]
默认分隔符是 space,但请尝试使用 :
以查看其工作原理。
如果您要生成 CSV 文件,请使用 Tcllib 中的 csv
package。它为您处理棘手的边缘情况(例如,嵌入的逗号)。