TCL 输出文件 1
TCL output file 1
我有一个小的 tcl 脚本可以从文件中输出文本
在 test.txt 中是文本:
---------------------------[list]-----------------------------------------
00.01 aaaa
00.02 bbbbbbbbbbbbbbbbbb
--------------------------------------------------------------------------
我的 tcl 脚本
bind pub - !textlist pub:textlist
proc pub:textlist {nick uhost hand chan args} {
set file [open /home/test.txt]
set input [read $file]
set lines [split $input "\n"]
foreach line $lines {
putnow "PRIVMSG $chan :$line"
}
}
输出现在是:
<@t> !textlist
<@test> ---------------------------[list]-----------------------------------------
<@test> 00.01 aaaa
<@test> 00.02 bbbbbbbbbbbbbbbbbb
<@test> --------------------------------------------------------------------------
<@test> :
如何删除通道输出中的最后一个:?在文件中 test.txt 不是最后一行之后的新行 -----
此致
当您有一个包含两个换行符的文件时:
aaaa
bbbb
使用换行符的split
操作将拆分组件
分为三个部分。最后一部分是空的。
您可以在拆分操作之前删除换行符:
regsub "\n$" $input {} input
set lines [split $input \n]
或者您可以更改文件的处理方式:
set fh [open myfile.txt]
while { [gets $fh line] >= 0 } {
puts $line
}
close $fh
(另外:您的示例代码在读取文件后并未关闭文件)。
read
命令实际上有一个选项可以丢弃文件末尾的尾随换行符。所以,只需将 "read" 行更改为:
set input [read -nonewline $file]
我有一个小的 tcl 脚本可以从文件中输出文本
在 test.txt 中是文本:
---------------------------[list]-----------------------------------------
00.01 aaaa
00.02 bbbbbbbbbbbbbbbbbb
--------------------------------------------------------------------------
我的 tcl 脚本
bind pub - !textlist pub:textlist
proc pub:textlist {nick uhost hand chan args} {
set file [open /home/test.txt]
set input [read $file]
set lines [split $input "\n"]
foreach line $lines {
putnow "PRIVMSG $chan :$line"
}
}
输出现在是:
<@t> !textlist
<@test> ---------------------------[list]-----------------------------------------
<@test> 00.01 aaaa
<@test> 00.02 bbbbbbbbbbbbbbbbbb
<@test> --------------------------------------------------------------------------
<@test> :
如何删除通道输出中的最后一个:?在文件中 test.txt 不是最后一行之后的新行 -----
此致
当您有一个包含两个换行符的文件时:
aaaa
bbbb
使用换行符的split
操作将拆分组件
分为三个部分。最后一部分是空的。
您可以在拆分操作之前删除换行符:
regsub "\n$" $input {} input
set lines [split $input \n]
或者您可以更改文件的处理方式:
set fh [open myfile.txt]
while { [gets $fh line] >= 0 } {
puts $line
}
close $fh
(另外:您的示例代码在读取文件后并未关闭文件)。
read
命令实际上有一个选项可以丢弃文件末尾的尾随换行符。所以,只需将 "read" 行更改为:
set input [read -nonewline $file]