Как получить только определенные поля из данного файла?

У меня есть список сотрудников в следующем формате

Name: 
Phone No:
Email: 

Name:
Address:
Phone No:
Email:

Name:
Country:
Address:
Phone No:
Email:

Name:
Address:

Name :
Email:
Address: 

Все, что мне нужно, это получить только имя и адрес электронной почты.

Я пробовал что-то вроде cat filename | grep -e ^ Имя: -e ^ Электронная почта: , но не удалось на 100%.

0
10.03.2019, 15:58
2 ответа

Если под «не на 100% успешно» вы имеете в виду, что вам нужны только значения полей без имен полей, тогда вам нужно использовать awk , а не grep.

например.

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

Или, если вы все еще хотите, чтобы каждая запись была разделена пустой строкой:

awk -F: '$1 ~ /^(Name|Email)$/ {print $2}; /^[[:space:]]*$/ {print "\n"}' filename
0
28.01.2020, 02:35

Используйте |, который является оператором "или" для regex в команде grep. Также нет необходимости в cat. grep может читать из файла напрямую.

grep '^Name:\|^Email:' filename
2
28.01.2020, 02:35

Теги

Похожие вопросы