t substituição

1

Eu tenho uma string da seguinte forma:

/test/test/ 12 /test/test

Meu objetivo é transformá-lo em:

/test/est/ 12 /test/test

Este é o comando:

echo "$x" | sed 's@\(/*/\).@@g'"

Estou usando no momento, mas ele está sendo aplicado em todos os lugares, e não na segunda instância de "/"

Alguém pode me guiar?

    
por manmohan Singh 27.04.2016 / 14:12

3 respostas

1

Como afirma a steeldriver, se você usar o GNU sed, você pode dizer qual ocorrência deve ser substituída, por exemplo:

echo "/test/test/ 12 /test/test" | sed -n -e  's_/._/_2 p' 

Se você não pode usar esse recurso, você também pode escrever:

echo "/test/test/ 12 /test/test" | sed -n -r -e  's_(/[a-z]([a-z]+))_/_ p'

Biliografia: link [ Usando \ 1 para manter parte do padrão ]

    
por 28.04.2016 / 00:04
0
echo "/test/test/ 12 /test/test" | sed 's/\/test\/t/\/test\//'
    
por 27.04.2016 / 14:16
0

Agradável e fácil ...

sed -n "s/test/est/2p"
  • -n não imprime nada
  • s / substituto
  • "test" com "est"
  • / 2, mas apenas a segunda instância
  • p imprime os resultados
por 03.05.2016 / 16:24