sed -E 's/\S+\s/& /g' your_monospace.file
awk -v OFS=" " '{$1=$1}1' your_monospaced.file
perl -pale '$_ = join $" x 5, @F' your_monospaced.file
Проблема в том, что ~
воспринимается буквально и не расширяется, когда вы вводите его в качестве ввода для read
.
Проверь:
$ read target
~
$ ls $target
ls: cannot access '~': No such file or directory
(примечание, кавычки вокруг~
)
eval target=$target # unsafe
или лучше, но расширяется только~
:
target="${target/#\~/$HOME}"
или даже лучше, не вводите переменные и т.п. в read
в первую очередь.