O que o #
personagem significa nesta linha:
/bin/sed -e 's#abc#zzz#g'
fonte
O que o #
personagem significa nesta linha:
/bin/sed -e 's#abc#zzz#g'
É um separador, assim como "/"
é o mesmo que 's/abc/zzz/g'
.
significa procurar por "abc" substitua-o por "zzz", com bandeira 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 de padrão, mas nesse caso, você precisa escapá-lo para que seja interpretado corretamente:
sed -r '\#abc#p'
É um delimitador ou separador. O mais 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 um caractere que você sabe que não precisará expressar em sua sed
expressão, poupando-lhe muitas fugas irritantes.
Digamos que você queira substituir
/ubuntu//questions
com
/ubuntu//posts
Você poderia usar
sed 's/https:\/\/askubuntu.com\/questions/https:\/\/askubuntu.com\/posts/' file
Mas é melhor usar
sed 's|/ubuntu//questions|/ubuntu//posts|' file
/
pode ser substituído por um caractere alternativo em contextos diferentes dos
comando (substitute) - mas nesse caso ele precisa ser escapado na primeira vez, por exemplo,sed '/foo/d'
(excluir linhas correspondentesfoo
) se tornased '\#foo#d'
sbabeb
faz o mesmo ques/a/e/
.