我的 sed 替换有什么问题?

我的 sed 替换有什么问题?

我正在尝试使用正则表达式从 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'

相关内容