You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash脚本提取邮件主题时,如何将grep返回的空格替换为'none'?

解决邮件主题答案提取及空白替换问题

你的问题出在Bash变量赋值的特性上:当用var=$(command)捕获命令输出时,Shell会自动忽略开头/结尾的空白,且将连续空白压缩成单个空格,导致单独的空格被直接丢弃。

直接用管道链一步处理就能得到你要的结果,不需要存入变量,推荐两种方法:

方法1:用awk处理

awk可以直接提取指定字段,并判断是否为空后替换:

grep '^Subject:' /var/mail/incoming | awk '{print ($9 == "" ? "none" : $9)}'

解释:$9对应主题里的第9个字段(也就是yes/no/空格),如果字段为空就输出none,否则输出字段内容。

方法2:用sed精准匹配替换

针对固定的主题格式,用sed直接提取答案部分并替换空白:

grep '^Subject:' /var/mail/incoming | sed -E 's/^Subject: RE: The answer to your question is (yes|no|)$/\1/; s/^$/none/'

解释:

  • 第一个替换规则^Subject: RE: The answer to your question is (yes|no|)$精准匹配主题行,捕获最后部分的yes/no/空白;
  • 第二个替换规则把捕获到的空白(也就是空行)替换成none。

执行后就能直接输出你期望的结果:

yes
no
no
yes
none
yes
no

内容的提问来源于stack exchange,提问作者kmt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 12:21:04