我想提取電子郵件標頭值,如郵件ID使用可變
grep的不正確地使用以前的變量...
這裏是我的代碼:
for email in $1/*.eml
do
MSGID=$(cat ${email} | grep -i 'Message-ID:' |awk '{print $2}')
M=$(echo "\""${MSGID}"\"")
SRV="/var/log/maillog"
echo "${M}"
VER=$(grep -i ${M} ${SRV} | tail -n 1)
echo ${VER}
done
我想用M變量重新包裝初始變量MSGID;不幸的是,我仍然無法弄清楚。
初始值(輸入)看起來是這樣的:
Message-ID: <[email protected]>
的MSGID
只保留爲字符串:
<[email protected]>
然後,我想用這個字符串反對使用grep
文件。不幸的是,VER
命令不會觸發任何東西。
我認爲添加"\""${MSGID}"\""
會/應該保持初始字符串不變。
此腳本中有很多冗餘步驟。請[編輯]您的問題以提供您的輸入樣本和所需的輸出。 – 2015-03-02 11:53:07
請顯示一些輸入文件以及您的預期輸出。也許不值得讓你的當前腳本成爲開始,因爲例如'awk'可以以一種直接的方式處理它。 – fedorqui 2015-03-02 11:54:02
可能'MSGID = $ awk'/^Message-ID:/ {print $ 2}'file)'會更快。另外,注意'SRV'可以在'for'循環之外聲明,因爲它是一個固定值。 – fedorqui 2015-03-02 12:18:09