Что я делаю не так?
То, что вы делаете неправильно, использует '
(одинарные кавычки) символы.Они не являются особенными для Tcl вообще .Эквивалент в Tcl заключает слово в {
фигурные скобки }
;это не дает особого отношения к персонажам внутри.Таким образом, то, что вы стремитесь сделать, было бы:
exec /bin/sed {s/ +/ /g} $file
Имейте в виду, если вы делаете что-то более сложное и ограничиваете Tcl целыми словами без кавычек, тогда вы можете вместо этого пойти на это:
exec /bin/sh -c "sed 's/ +/ /g' $file"
Или real идиоматический Tcl просто не использует sed для чего-то такого простого:
set f [open $file]
set replacedContents [regsub -all { +} [read $f] " "]
close $f