Я попытался извлечь уникальные домены из списка электронных писем, сохраненных в папке. Я попробовал следующее sed
команда:
Данный вход был читаем мне как электронные письма в файле.
sed 's/^.*@//g' "180 Millions Emails Data 1"/* | sort -u > OutPutUniqueDomain2.txt
Вывод - что-то вроде этого:
®_18casper???!!!!!!!®@yahoo.com
®_18casper®@yahoo.com
§Ú°Û±o€£°÷°Ê€H§A§OœK¬Ü@home.com
³·³·---ŠÜ€ÖÁÙŠ³§A@hotmail.com
§AŠn¶Ü@hotmail.com
³aªoºÐ@hotmail.com
aol.com
Aol.com
Aol.Com
AOl.com
AOL.com
Ожидаемый Вывод:
yahoo.com
home.com
hotmail.com
aol.com
Я ожидаю иметь только уникальные домены в своем выводе. Я не знаю, питается ли входной файл правильно все еще, подобные неизвестные charcters появляются в файле, и даже домен не извлечен. Они появляются как электронное письмо. Также домен не уникален. Что неправильно я сделал с командой?
Большое спасибо @zwets для идентификации кодирования выпускает и фиксирует. Странные символы должны быть уничтожены путем выполнения любого
iconv -f ISO-8859-2 -t UTF-8 file | sed -r 's/\r//; s/.*@([^@]+)$/\L\1/' | sort -u > output
(На основе комментариев в чате)
sed
команда: .*([^@]+)$
сохраняют символы, которые не являются @
в конце строки \L
нижний регистр все \1
сохраненная часть от более раннего