Замечание и вопрос.
Дан текстовый файл со строками, которые содержат escape-символы. Т.е. обратная косая черта. Разбор этих строк и разделение контента с использованием lindex
и lassign
уничтожают escape-символы. Это полу вопрос. Я подозреваю, что в TCL назначение включает в себя разбор целевого объекта и, следовательно, обработку escape-символов. Интересно, есть ли способ обойти это.
Мое наблюдение состоит в том, что только регулярное выражение могло разделить строку без обработки.
Я уверен, что текстовый редактор форума испортит мой тестовый файл,(Ну что ж, это не так)
% cat lines.txt
1 a/b/c/d[7]
2 a/b\/c\/d\[7\]
3 a\/b/c/d[7]
set fp [ open lines.txt ]
set rpt [ read $fp ]
close $fp
foreach line [ split $rpt \n ] {
set val [ lindex $line 0 ]
set str [ lindex $line 1 ]
puts "val= $val : str= $str"
}
val= 1 : str= a/b/c/d[7]
val= 2 : str= a/b/c/d[7]
val= 3 : str= a/b/c/d[7]
val= : str=
foreach line [ split $rpt \n ] {
lassign $line val str
puts "val= $val : str= $str"
}
val= 1 : str= a/b/c/d[7]
val= 2 : str= a/b/c/d[7]
val= 3 : str= a/b/c/d[7]
val= : str=
foreach line [ split $rpt \n ] {
regexp {(\S+)\s+(\S+)} $line dmy val str
puts "val= $val : str= $str"
}
val= 1 : str= a/b/c/d[7]
val= 2 : str= a/b\/c\/d\[7\]
val= 3 : str= a\/b/c/d[7]
val= 3 : str= a\/b/c/d[7]