Esta é uma maneira awk
.
awk -v RS=\" '/@/' infile.txt
Os itens acima estão corretos quando você cita campos, senão você deve ter RS com vários RecordSeperators. como RS='[[:blank:]]*:'
por sua amostra no seu comentário.
Estou tentando imprimir apenas endereços de e-mail de um arquivo, o formato de arquivo é o seguinte:
{"12":"34","email":"[email protected]","firstname":"john","lastname":"smith","text":"0","sig":"js","..":"2017-08-23"}
Como posso apenas extrair usando awk -F? Então eu posso usar o awk -F '"' '{print $ 8}', mas a 8ª coluna nem sempre é o endereço de e-mail.
Existe uma maneira de usar o awk -F COM uma expressão regular de '@'? Ou imprima todos os textos no delimitador em linhas separadas e, em seguida, canalize-o para | grep '@'
Obrigado
jq é adequado ferramenta para analisar / manipular dados json:
jq '.email' jsonfile
A saída:
"[email protected]"
O reg-ex pode precisar de ajustes para ser totalmente compatível com o RFC 5322, mas como um iniciador, tente:
awk '{match($0,"[a-zA-z0-9._%+-]+@[a-zA-z0-9._%+-]",a)}END{print a[0]}'