Como faço para trocar dois campos separados por barra invertida e enviá-los separados por um sinal de arroba?

1

O arquivo original contém endereços de e-mail no seguinte formato:

domain.com\first.lastname

Eu usei sed para substituir a barra invertida por um sinal @ .

Eu tentei várias sugestões para trocar os campos domain.com e first.lastname .

sed 's/\(.*\) \@ \(.*\)/ - /' memberfile
sed -e 's/\(.*\)\s\(.*\)/ /' memberfile
sed -r 's/([a-zA-Z0-9]+) \- ([a-zA-Z0-9])*/ \- /' memberfile

Todos os itens acima apenas exibem [email protected] ... Eu sou muito verde para sed!

    
por akegb3 03.06.2016 / 18:49

2 respostas

2

Tente isto:

sed 's/\(.*\)\\(.*\)/@/' memberfile

Isso pressupõe que o arquivo ainda esteja no formato original separado por barra. Se estiver em um formato @ -separado, tente:

sed 's/\(.*\)@\(.*\)/@/' memberfile
    
por 03.06.2016 / 18:54
2

Outras formas sem sed / regex:

awk -F\ '{print $2"@"$1}' memberfile

ou

cut -d\ -f1 memberfile | paste -d@ memberfile - | cut -d\ -f2
    
por 03.06.2016 / 19:13