чтобы исправить это: добавьте косую черту перед началом числа (я использую :
для разделения шаблона и замены вместо /
, нет необходимости экранировать косую черту)
% echo 1 2 3 4 5 6 7 | sed 's:\([1-9]\+\):/\1:g'
проблема вашей команды в том, что вы используете *
, чтобы соответствовать либо space
или Carret ^
и не только один из них, но любое их число, включая 0., который также соответствует концу строки (после 7) (и, к счастью, для вас также в начале).
чтобы заставить это работать с любым словом (иначе непространственным), используйте это:
% echo ha hu 1 2 ho | sed 's:[^ ]\+:/&:g'