Вот мой вариант, консольный, кроссплатформенный.
В качестве аргумента передать имя файла, который необходимо отсортировать.
Для каждого домена будет создан свой текстовый файл + проверка на неправильный формат.
P.S. Для работы необходим Python (www.python.org)
[CODE]
#!/usr/bin/env python
#-*-encoding:UTF-8-*-
#(c) modestus
import sys
try:
input_file = sys.argv[1]
except IndexError:
print u"Первым аргументом необходимо передать имя исходного файла"
else:
handlers = {
"$source$"

pen(input_file),
"$bad_format$": open("bad_format.txt", "a")
}
print u"Обрабатывается файл '{0}'".format(input_file)
for line in handlers["$source$"]:
line = line.strip("\r\n")
pos_1 = line.find("@")
pos_2 = line.find(";")
domain = line[pos_1+1

os_2]
if not domain:
handlers["$bad_format$"].write("{0}\n".format(line))
else:
try:
if not domain or pos_1