Discussion:
[shell-script] Branches em Sed com desvio condicional
Terminal Root terminalroot.com.br@gmail.com [shell-script]
2017-11-25 22:40:27 UTC
Permalink
Salve, rapaziada!

Parece que o grupo de Sed tá meio off, então vou perguntar por aqui mesmo.

Tenho arquivo assim:

sed : distros.txt
Gentoo
FreeBSD
GNU/Hurd
Slackware
Void
Exherbo
Debian
Ubuntu

Se eu quisesse trocar todas as letras 'e' por '3' exceto as que tivessem um
'r' logo após o 'e' , como ficaria a linha?

Tentei de várias formas e não obtive sucesso. Exemplo:

sed ':loop;s/e\([^r]\)/3/g;t loop' distros.txt
Janduy Euclides janduyeuclides@googlemail.com [shell-script]
2017-11-25 23:13:03 UTC
Permalink
Boa noite, brother que eu não sei o nome rsrs. Blz?

Eu acho que isso te ajuda.

sed '/r/! s/e/3/g' distros.txt

Abs!



________________________

Janduy Euclides - dCAA, Xorcom CompletePBX-v4/v5, SBC e PBX Basic.
E-mail: ***@gmail.com
Tel.: +55 11 9-9835-1136
Acesse - Asterisk help! <http://www.asterisk.help/>
Visite - Fundação Asterisk Libre - FAL <http://www.asterisklibre.org/>
________________________

<https://www.linkedin.com/in/janduyeuclides/>
Post by Terminal Root ***@gmail.com [shell-script]
Salve, rapaziada!
Parece que o grupo de Sed tá meio off, então vou perguntar por aqui mesmo.
sed : distros.txt
Gentoo
FreeBSD
GNU/Hurd
Slackware
Void
Exherbo
Debian
Ubuntu
Se eu quisesse trocar todas as letras 'e' por '3' exceto as que tivessem
um 'r' logo após o 'e' , como ficaria a linha?
sed ':loop;s/e\([^r]\)/3/g;t loop' distros.txt
Fredi Rolf Bieging fredi.bieging@gmail.com [shell-script]
2017-11-26 00:37:32 UTC
Permalink
Faltou o retrovisor "\1" e adicionar um "|$" para o caso do "Slackware":

sed -r ':loop;s/e([^r]|$)/3\1/g;t loop' distros.txt
Post by Terminal Root ***@gmail.com [shell-script]
Salve, rapaziada!
Parece que o grupo de Sed tá meio off, então vou perguntar por aqui mesmo.
sed : distros.txt
Gentoo
FreeBSD
GNU/Hurd
Slackware
Void
Exherbo
Debian
Ubuntu
Se eu quisesse trocar todas as letras 'e' por '3' exceto as que tivessem
um 'r' logo após o 'e' , como ficaria a linha?
sed ':loop;s/e\([^r]\)/3/g;t loop' distros.txt
Terminal Root terminalroot.com.br@gmail.com [shell-script]
2017-11-26 10:51:42 UTC
Permalink
Putz, muito obrigado mesmo Fredi Rolf Bieging, funcionou perfeitamente!

Obrigado também Janduy Euclides (meu nome é Marcos Oliveira haha ) , no
entanto, na sua dica algumas linhas não sofreram modificações, mas obrigado
pela atenção!
Post by Fredi Rolf Bieging ***@gmail.com [shell-script]
sed -r ':loop;s/e([^r]|$)/3\1/g;t loop' distros.txt
Post by Terminal Root ***@gmail.com [shell-script]
Salve, rapaziada!
Parece que o grupo de Sed tá meio off, então vou perguntar por aqui mesmo.
sed : distros.txt
Gentoo
FreeBSD
GNU/Hurd
Slackware
Void
Exherbo
Debian
Ubuntu
Se eu quisesse trocar todas as letras 'e' por '3' exceto as que tivessem
um 'r' logo após o 'e' , como ficaria a linha?
sed ':loop;s/e\([^r]\)/3/g;t loop' distros.txt
itamarnet@yahoo.com.br [shell-script]
2017-11-26 11:40:03 UTC
Permalink
Caríssimo Root

Que tal:

sed ':loop; s/[Ee]\([^r]\)/3\1/; t loop; s/[Ee]$/3/'

Se o E maiúsculo não for o caso é só retirá-lo.

[]'s
Itamar
Terminal Root terminalroot.com.br@gmail.com [shell-script]
2017-11-26 15:35:58 UTC
Permalink
Excelente Itamar, tinha esquecido desse detalhe, pode ser que hajam
palavras com o 'E' maiúsculo!

Obrigadão!

Att,

Marcos Oliveira
Post by ***@yahoo.com.br [shell-script]
Caríssimo Root
sed ':loop; s/[Ee]\([^r]\)/3\1/; t loop; s/[Ee]$/3/'
Se o E maiúsculo não for o caso é só retirá-lo.
[]'s
Itamar
Loading...