sed + adicionar char antes de cada número

1

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
    
por yael 23.01.2011 / 14:32

2 respostas

2

Experimente:

echo '1 2 3 4 5 6 7' | sed 's|\w\+|/&|g'
    
por 23.01.2011 / 17:07
2

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'
    
por 23.01.2011 / 14:52

Tags