ТЗ в части "что требуется получить" не слишком понятно, честно говоря. Порезать файл по символу ":" ? Убрать из адреса часть с почтовым доменом ?
gvim. Вообще это текстовый редактор... но можешь с его помощью свершить сие в краткий срок секунд 10.
Это набираешь на клаве "qaf@df:i:<esc>j0q" (без кавычек есессно). Ставишь курсор на начало этого списка и давишь, например 100500@a. Все записи будут обработаны.
Надёжней,удалять домены так: sed s/\@mail.ru//g > [email protected] Навеняка можно перечислить все возможные домены в однострок,иначе придётся повозиться Сохраняется оригинальное соответствие login: pass Можно и так,но тут скорее всего не сохранится соответствие login: pass sed 's|@.*||' dic > login sed 's|.*:||' dic > pass paste -d '' login pass > baza Можно попробовать привести разделители к одному виду: sed -e s/\;/:/g где ; заменяется на : Но это тоже не не гарантирует чистоту. Я бы попробовал первый способ.
Некоторые варианты предложили выше, да и под Linux возможностей работы со строками масса. Я бы сначала предложил остановиться на алгоритме - определиться, как мы будем обрабатывать эти строки таким образом, чтобы не потерять данные и исключить ложные срабатывания (имеем ввиду, что в пароле могут встречаться симовлы "@" и ":", а все почтовые домены все равно перечислить нереально). Итак, а) первая (нужная) строка (логин) - это все символы с начала строки до первого символа "@" б) вторая (ненужная) строка (имя почтового домена) - это все символы, начиная с первого встречающегося в строке символа "@" до символа ":" в) третья (нужная) строка (пароль) - это все символы, начиная с первого встречающегося в строке символа ":" и до конца строки. Поскольку bash был выше - вот примеры работы со строками на Powershell (Windows): Code: $str="[email protected]:159260Dro" (создали строковую переменную) $str.IndexOf("@") (получили первое вхождение символа "@") $str.IndexOf(":") (получили первое вхождение символа ":") $str.Length (получили длину строки) Итого, если собрать все вместе, команда для обработки каждой конкретной строки будет такая: Code: $str.Substring(0,$str.IndexOf("@"))+$str.Substring($str.IndexOf(":"),$str.Length-$str.IndexOf(":")) Получаем вывод Code: nitro92:159260Dro Вроде, нигде не "накосячил" )) С построчным чтением строк из файла сами справитесь ? P.S.: Вот еще что - обработка ошибок от "кривых" строк (в строке нет "@" или ":") тут не предусмотрена, и, например, $str.IndexOf("Q") - это отсутствующий символ в приведеннном примере - выдаст "-1", после чего вся логика поедет коту под хвост.