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


Respostas:


14

É 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'

24

É 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 sedexpressã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 interessante notar que, pelo menos no GNU sed, /pode ser substituído por um caractere alternativo em contextos diferentes do scomando (substitute) - mas nesse caso ele precisa ser escapado na primeira vez, por exemplo, sed '/foo/d'(excluir linhas correspondentes foo) se tornased '\#foo#d'
steeldriver

@steeldriver de fato! - serra I que Ravexina acrescentou que a sua resposta, então eu talvez deixar o meu :)
Zanna

1
Não é importante se o fluxo contém o caractere separador. O importante é se a sequência de pesquisa ou de substituição contém o caractere separador.
kasperd

@kasperd oh sim, é verdade. Eu editei um pouco :)
Zanna

@ A resposta de Zanna é mais direta: o primeiro caractere após o comando "s" determina o separador usado neste comando. Você pode usar qualquer personagem aqui. sbabebfaz o mesmo que s/a/e/.
Rexkogitans
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.