Для решения твоей задачи, тебе необходимо считать файл в переменную. Сделать это можно разными способами, но наиболее уместные тут, это: file и file_get_contents.
Далее в случае с file_get_contents тебе надо или использовать регулярные выражения, для замены строк с помощью функции preg_replace и модификатором m в регулярном выражении, тем самым выполнить первую часть твоей задачи. Либо разбить полученный текст на строки с помощью функции explode по символу перевода строки. В результате получишь массив строк.
В случае когда у тебя есть массив строк, тебе надо пройтись по нему и проанализировать строки на предмет вхождения подстроки. Заводишь новый массив, куда будешь складывать строки. Итерация делается с помощью for, foreach или while. Поиск подстрок делается с помощью функции strpos или mb_strpos. Соответственно если нет символа @, добавляешь строки в новый массив, если нет, то нет.
Для того, чтобы убрать повторение строк, используй эту же строку в качестве ключа ассоциативного массива. Так же можно использовать функцию array_unique после того, как будет сделана первая часть задачи.
После того, как ты это сделаешь, тебе нужно будет склеить строчки обратно в текст, для этого используй функцию implode. Записать полученный текст в файл, тебе поможет функция file_put_contents