Я пытаюсь извлечь значения из заголовка электронной почты, как идентификатор сообщенияиспользование переменного с Grep
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
Я пытаюсь повторно инкапсулировать начальную переменную MSGID с переменной M; К сожалению, я все еще не мог понять это.
Начальное значение (вход) выглядит следующим образом:
Message-ID: <[email protected]>
MSGID
оставить только строку как:
<[email protected]>
Тогда я хотел бы использовать эту строку на файл с помощью grep
. К сожалению, команда VER
ничего не запускает.
Я думал, что добавление "\""${MSGID}"\""
должно было/должно содержать исходную строку без изменений.
В этом скрипте много избыточных шагов. Пожалуйста, отредактируйте свой вопрос, чтобы предоставить образец вашего ввода и желаемый результат. –
Пожалуйста, покажите некоторый файл ввода вместе с ожидаемым результатом. Возможно, это не значит, что ваш текущий скрипт является отправной точкой, поскольку, например, 'awk' может обрабатывать это способом прямолинейным способом. – fedorqui
Вероятно, 'MSGID = $ awk '/^Message-ID:/{print $ 2}' file)' будет быстрее. Кроме того, примечание 'SRV' может быть объявлено вне цикла' for', так как это фиксированное значение. – fedorqui