Как удалить из TXT файла, строчки где нет символа «@» используя PHP?
Для решения твоей задачи, тебе необходимо считать файл в переменную. Сделать это можно разными способами, но наиболее уместные тут, это: file и file_get_contents.
Далее в случае с file_get_contents тебе надо или использовать регулярные выражения, для замены строк с помощью функции preg_replace и модификатором m в регулярном выражении, тем самым выполнить первую часть твоей задачи. Либо разбить полученный текст на строки с помощью функции explode по символу перевода строки. В результате получишь массив строк.
В случае когда у тебя есть массив строк, тебе надо пройтись по нему и проанализировать строки на предмет вхождения подстроки. Заводишь новый массив, куда будешь складывать строки. Итерация делается с помощью for, foreach или while. Поиск подстрок делается с помощью функции strpos или mb_strpos. Соответственно если нет символа @, добавляешь строки в новый массив, если нет, то нет. 
Для того, чтобы убрать повторение строк, используй эту же строку в качестве ключа ассоциативного массива. Так же можно использовать функцию array_unique после того, как будет сделана первая часть задачи.
После того, как ты это сделаешь, тебе нужно будет склеить строчки обратно в текст, для этого используй функцию implode. Записать полученный текст в файл, тебе поможет функция file_put_contents
Три строчки:$source = file('/path/to/input/file');
$result = array_unique(array_filter($source, function ($str) { return strpos($str, '@')!==false; }));
file_put_contents('/path/to/output/file', implode(PHP_EOL,$result));
Для изучения: file()array_filter()strpos()array_unique()file_put_contents()implode()