我正在编写一个脚本来读取文件并替换一些包含无法识别的字符的字符
"^H^H^H^H^H^H^H^H^H"
Run Code Online (Sandbox Code Playgroud)
实际上,这个文件是通过重定向telnet会话的控制台输出生成的.我想删除这个角色.我必须从文件中删除"--More ---".
我试着用它来替换它们
set fileID [open "bar" r]
set temp [open "temp.txt" w+]
while {[eof $fileID] != 1} {
gets $fileID lineInfo
regsub -all "More" $lineInfo "" lineInfo
regsub -all "--More--" $lineInfo "" lineInfo #This is not working
puts $temp $lineInfo
}
Run Code Online (Sandbox Code Playgroud)
我可以删除"更多",但我无法删除" - 更多 - ".任何人都能解释一下吗?
我也尝试过
regsub -all "^H^H^H^H^H^H^H^H^H" $lineInfo "" lineInfo #This is also not working
Run Code Online (Sandbox Code Playgroud)
这也行不通.
提前致谢.
我建议:print:您在正则表达式中使用字符类来匹配所有"明智"字符 - 请参阅re_syntax手册页.
结果调用regsub应该用空字符串替换所有不可打印的字符,因此我们使用否定字符类(via ^),因此正确的咒语将如下所示:
set lineInfo [regsub -all {[^[:print:]]} $lineInfo ""]
Run Code Online (Sandbox Code Playgroud)
至于删除" - 更多 - "" - 我有两个假设:
regsub--More--因为它以破折号开头而被视为一个开关而感到困惑.这可以通过传递--到regsub所有开关后轻松修复- 请参见手册页.xxd或HEX-editor/viewer 检查文件.