É um delimitador alternativo para o comando sed
substitute ( s
). Normalmente, a barra é usada, como em s/pattern/replacement/
, mas sed
permite que quase qualquer caractere seja usado.
O principal motivo para usar outro delimitador do que /
na expressão de substituição sed
é quando a expressão atua no literal /
caracteres.
Por exemplo, para substituir o caminho /some/path/here
por /other/path/now
, pode-se fazer
s/\/some\/path\/here/\/other\/path\/now/
Isso sofre do que é geralmente chamado de "síndrome do palito inclinado" , o que significa que é difícil ler e interpretar corretamente manter.
Em vez disso, podemos usar outro delimitador de expressão:
s#/some/path/here#/other/path/now#
Usar ~
é apenas outro exemplo de um delimitador de expressão de substituição válido.
Sua expressão
s~ ~~g
é o mesmo que
s/ //g
e removerá todos os espaços da entrada. Nesse caso, não é necessário usar outro delimitador além de /
, pois nem o padrão nem a substituição contêm /
.
Outra maneira de fazer o mesmo é
tr -d ' ' <infile >outfile