O que significa o caractere # em: / bin / sed -e # abc # zzz # g '?

10

O que o caractere # significa nesta linha:

/bin/sed -e 's#abc#zzz#g'
    
por Khalith Basha 17.06.2017 / 22:23

2 respostas

14

É um separador, assim como "/" , é igual a 's/abc/zzz/g' .

significa procurar por "abc" substituí-lo por "zzz", com sinalizador global, significa fazê-lo para todos os "abc" na linha, não apenas o primeiro.

Você também pode usar um separador alternativo para um endereço padrão, mas, nesse caso, é necessário escapar para que ele seja interpretado corretamente:

sed -r '\#abc#p'
    
por Ravexina 17.06.2017 / 22:26
24

É um delimitador ou um separador. O mais comumente usado é / como em

sed 's/old/new/' file

Mas o sed terá o primeiro caractere após o (s) comando (s) como delimitador. Você pode usar qualquer caractere conveniente, por exemplo ...

sed 's%old%new%' file

Isso é muito útil se o arquivo contiver / (ou outros caracteres de delimitação convencionais). Você pode escolher como separador algum caractere que você sabe que não precisará colocar em sua expressão sed , poupando-lhe um monte de escape irritante.

Digamos que você queira substituir

https://askubuntu.com/questions

com

https://askubuntu.com/posts

Você poderia usar

sed 's/https:\/\/askubuntu.com\/questions/https:\/\/askubuntu.com\/posts/' file

Mas é melhor usar

sed 's|https://askubuntu.com/questions|https://askubuntu.com/posts|' file
    
por Zanna 17.06.2017 / 22:27