我有以下格式的员工名单
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