merrni të gjitha listat e dërguesit nga drejtoria vmail

Po përpiqem të ndërtoj një listë të postës elektronike. Unë do të doja të merrja adresat e postës elektronike nga një postë elektronike që nuk inkurajon postat (vmail /..../ cur). Unë përdor pëllumb, por mendoj se nuk ka rëndësi. A ka ndonjë mënyrë për të marrë të gjithë listën e dërguesit nga një direktori / cur me email 30000 ~ në të?

Unë kam provuar:

cat 1325153222.M840289P9721V0000000000000901I034001E2_2\,S\=2892\:2\, | grep 'From:' | awk '{ print $3 }'

Dalja: (e fshehur) do të ishte mirë nëse do të funksiononte në një direktori të tërë jo vetëm një skedar.

0
задан 16 January 2019 в 13:49
2 ответа

Слишком длинный комментарий к вашему ответу , но есть некоторые предположения, которые вы делаете в своей стратегии

find . -type f -exec cat {} + | grep 'From:' | awk '{ print $3 }' 

, которые я хотел бы рассмотреть.


Заголовок От: обычно имеет форму

From: Sender Name or Description <author@example.com>  

, где последнее (и не обязательно третье ) поле - это прилагаемый адрес электронной почты автор: <> . Это означает, что | awk '{print $ 3}' не всегда может распечатать адрес электронной почты.
Параметр NF в awk содержит количество полей и с помощью | awk '{print $ NF}' вы всегда получите awk для печати последнего поля / столбца в строке.

Что касается подкоманды grep 'From:' :

, я бы рекомендовал сопоставить только первое вхождение строки, которая начинается с From: ] с регулярным выражением, поскольку это будет строка заголовка, а любые дополнительные вхождения строки «От:» могут исходить из тела сообщения. Вы также можете остановиться после первого совпадения с помощью -m , что будет немного быстрее для больших сообщений. Так что попробуйте grep -m 1 -e "^ From: \"

С точки зрения стиля, вы всегда можете заменить cat FILENAME | grep STRING с grep STRING FILENAME и просто используйте переключатель -r в grep для рекурсивного анализа всех файлов в вашем Maildir.

grep -r -e "^From:\ " -m 1 . |awk '{print $NF}'
1
ответ дан 4 December 2019 в 15:46
find . -type f -exec cat {} + | grep 'From:' | awk '{ print $3 }'

Это хорошо работает

0
ответ дан 4 December 2019 в 15:46

Теги

Похожие вопросы