У меня есть список сотрудников в следующем формате
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%.
Если под «не на 100% успешно» вы имеете в виду, что вам нужны только значения полей без имен полей, тогда вам нужно использовать awk
, а не grep.
например.
awk -F: '$1 ~ /^(Name|Email)$/ {print $2}' filename
Или, если вы все еще хотите, чтобы каждая запись была разделена пустой строкой:
awk -F: '$1 ~ /^(Name|Email)$/ {print $2}; /^[[:space:]]*$/ {print "\n"}' filename
Используйте |
, который является оператором "или" для regex в команде grep. Также нет необходимости в cat
. grep
может читать из файла напрямую.
grep '^Name:\|^Email:' filename