我正在阅读一行,并使用正则表达式在我的脚本中匹配它。 (/斌/庆典)
echo $line | grep -E '[Ss][Uu][Bb][Jj][Ee][Cc][Tt]: [Hh][Ee][Ll][Pp]' > /dev/null 2>&1
if [[ $? = "0" && -z $subject ]]; then
subject=`echo $line | cut -d: -f2` > /dev/null
echo "Was able to grab a SUBJECT $line and the actual subject is -> $subject" >> $logfile
fi
现在我的问题是我使用冒号作为分隔符。但有时电子邮件会在主题中有多个冒号,因此我无法抓住整个主题。我正在寻找一种方法来获取冒号跟随主题之后的所有内容。甚至是有办法循环并检查冒号或什么。也许cut允许你用字符串作为分隔符剪切?不确定......有什么想法吗?
谢谢!
答案 0 :(得分:1)
您已经在Q评论过的建议的其他替代方案是:
cut -d\: -f2-
-f2之后的短划线表示包括所有其余字段。基于shell的解决方案也比运行“剪切”流程更快。
我可能还建议你双重引用echo的arg(以及$ {line#*:},以避免在$ line中的单词之间丢失多个/非空格空格如果你关心打印它/传递它因为它对线上的角色没有任何影响。
grep也有-i标志,它可以避免你为每个字母写下[lower-upper],并使它更具可读性。如果你不想要grep的输出,而不是将它重定向到/ dev / null,你可以使用-q标志,这意味着不输出它 - 只需退出ok / not状态代码就可以检查它。如果您正在处理多条线路并想要在第一条线路上退出,那么您也可以使用另一条线路进行退出。