我正在尝试使用正则表达式从 perforce users 命令中提取用户电子邮件。但由于某种原因我遇到了这个问题。有人可以告诉我我做错了什么吗?
p4 user -o $user | grep 'Email:' | awk '/Email:/{i++}i==2' | sed -e 's/Email: //g'
我得到这个:
Email: perforce@master
但目的是得到之后的东西Email:
答案1
使用 awk 时不需要 grep 或 sed。您没有显示输出,p4 user -o $user
因此猜测 awk 的输入是什么,但很可能这就是您所需要的:
p4 user -o "$user" | awk '($1=="Email:") && c++{print $2; exit}'
但可能有一个更简单的解决方案,具体取决于 的输出是什么p4 ...
。
答案2
您正在尝试匹配确切数量的空格。这可能就是问题所在。例如,您的 sed 表达式也会因制表符而失败。尝试将空格与一般情况匹配,例如:
sed -e 's/Email:[[:blank:]]*//g'