如何从给定文件中仅获取某些字段?

如何从给定文件中仅获取某些字段?

我有以下格式的员工名单

Name: 
Phone No:
Email: 

Name:
Address:
Phone No:
Email:

Name:
Country:
Address:
Phone No:
Email:

Name:
Address:

Name :
Email:
Address: 

我想要的只是获取姓名和电子邮件地址。

我尝试过类似的方法cat filename | grep -e ^Name: -e ^Email:,但并不是 100% 成功。

答案1

|在 grep 命令中使用“or”运算符作为正则表达式。另外,不需要cat.grep可以直接从文件中读取。

grep '^Name:\|^Email:' filename

答案2

如果“不是 100% 成功”意味着您只需要字段的值,而不需要字段名称,那么您需要使用awk而不是 grep。

例如

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

或者,如果您仍然希望每个记录用空行分隔:

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

相关内容