Como obter apenas certos campos de um determinado arquivo?

0

Eu tenho uma lista de funcionários no seguinte formato

Name: 
Phone No:
Email: 

Name:
Address:
Phone No:
Email:

Name:
Country:
Address:
Phone No:
Email:

Name:
Address:

Name :
Email:
Address: 

Tudo o que eu quero é que para obter apenas o nome e endereço de e-mail. Como conseguir o mesmo?

Eu tentei algo como cat filename | grep -e ^Name: -e ^Email: , mas não foi 100% bem-sucedido.

    
por Arka Majumdar 22.03.2016 / 15:16

2 respostas

2

Use | , que é o operador "ou" para regex no comando grep. Além disso, não há necessidade de cat . grep pode ler diretamente do arquivo.

grep '^Name:\|^Email:' filename
    
por 22.03.2016 / 15:23
0

Se por "não 100% bem-sucedido" você quiser apenas os valores dos campos, sem os nomes dos campos, você precisará usar awk em vez de grep.

por exemplo,

awk -F: '$1 ~ /^(Name|Email)$/ {print $2}' filename

Ou, se você ainda quiser cada registro separado por uma linha em branco:

awk -F: '$1 ~ /^(Name|Email)$/ {print $2}; /^[[:space:]]*$/ {print "\n"}' filename
    
por 22.03.2016 / 23:27