Experimente:
echo '1 2 3 4 5 6 7' | sed 's|\w\+|/&|g'
Eu quero adicionar um "/" antes de cada número usando sed
:
echo 1 2 3 4 5 6 7 | sed 's/[ ^]*/&\//g'
/1 /2 /3 /4 /5 /6 /7/
Quando eu uso essa sintaxe, por que recebo o "/" depois de 7? Como posso corrigir minha sintaxe sed
para obter isso:
/1 /2 /3 /4 /5 /6 /7
para consertar: prefixar a barra antes do início de um número (eu uso o :
para separar o padrão e a substituição em vez de /
, não é necessário escapar da barra então)
% echo 1 2 3 4 5 6 7 | sed 's:\([1-9]\+\):/:g'
o problema do seu comando é que você usa o *
para corresponder a space
ou a carret ^
. e não apenas um deles, mas qualquer número deles, incluindo 0. que coincide com o final da linha (após o 7) também (e, felizmente, para você também no início).
para fazer isso funcionar com qualquer uma das palavras (nonspace) use:
% echo ha hu 1 2 ho | sed 's:[^ ]\+:/&:g'