É 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