Помогите с текстом

Discussion in 'Болталка' started by ExQ, 13 Mar 2019.

  1. ExQ

    ExQ Member

    Joined:
    8 Apr 2010
    Messages:
    45
    Likes Received:
    7
    Reputations:
    0
    Братцы имеются строки

    mail pass

    пример
    mail@gmail.com: pass
    gmail@yandex.ru : pass

    итд
    из этих строк нужно сделать login ;pass
    т.е @gmail.com @yandex.ru
    что бы получось так

    login ;pass
    mail ;pass
    gmail ;pass
     
  2. ExQ

    ExQ Member

    Joined:
    8 Apr 2010
    Messages:
    45
    Likes Received:
    7
    Reputations:
    0
    не кто не поможет?((
     
  3. SladerNon

    SladerNon Илья Пророк

    Joined:
    6 Mar 2005
    Messages:
    1,639
    Likes Received:
    502
    Reputations:
    354
    вроде софт есть для этого
    текс утилс
    как-то так называется
     
    ExQ likes this.
  4. BillyBons

    BillyBons Active Member

    Joined:
    1 Dec 2016
    Messages:
    223
    Likes Received:
    111
    Reputations:
    13
    ТЗ в части "что требуется получить" не слишком понятно, честно говоря.
    Порезать файл по символу ":" ? Убрать из адреса часть с почтовым доменом ?
     
    ExQ and hydra like this.
  5. DartPhoenix

    DartPhoenix Well-Known Member

    Joined:
    15 Sep 2013
    Messages:
    281
    Likes Received:
    4,211
    Reputations:
    5
    gvim. Вообще это текстовый редактор... но можешь с его помощью свершить сие в краткий срок секунд 10.
     
  6. ExQ

    ExQ Member

    Joined:
    8 Apr 2010
    Messages:
    45
    Likes Received:
    7
    Reputations:
    0
    убрать с почтовыми доменами
     
  7. ExQ

    ExQ Member

    Joined:
    8 Apr 2010
    Messages:
    45
    Likes Received:
    7
    Reputations:
    0
    поможешь воспользоваться
    таких строк очень много
    нужно убрать почтовики
    и оставить логин пасс


    nitro92@bk.ru:159260Dro
    nnep@km.ru:1680760
    cane@ngs.ru:1679494
    sergei-nik90@mail.ru:55555458
    kotenoklove@1nsk.ru:kotenoklove
    wel@cracki.ru:123456789
    pp_bishkek@mail.ru:KyrgyzstaN
    dergss@mail.piter.ru:sor301110
    ----------------------------------------------------------
    что бы получилось так

    nitro92:159260Dro
    nnep1680760
    cane:1679494
    sergei-nik90:55555458
    kotenoklove:kotenoklove
    wel:123456789
    pp_bishkek:KyrgyzstaN
    dergss:sor301110
     
  8. DartPhoenix

    DartPhoenix Well-Known Member

    Joined:
    15 Sep 2013
    Messages:
    281
    Likes Received:
    4,211
    Reputations:
    5
    Это набираешь на клаве "qaf@df:i:<esc>j0q" (без кавычек есессно).
    Ставишь курсор на начало этого списка и давишь, например 100500@a. Все записи будут обработаны.
     
  9. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    513
    Likes Received:
    148
    Reputations:
    5
    notepad++
    И регулярные выражения
    думаю тебе на день работы, зато потом будешь гуру
     
  10. hydra

    hydra Well-Known Member

    Joined:
    24 Jul 2015
    Messages:
    1,497
    Likes Received:
    12,669
    Reputations:
    25
    Надёжней,удалять домены так:
    sed s/\@mail.ru//g > bez@mail.ru
    Навеняка можно перечислить все возможные домены в однострок,иначе придётся повозиться
    Сохраняется оригинальное соответствие login: pass

    Можно и так,но тут скорее всего не сохранится соответствие login: pass
    sed 's|@.*||' dic > login
    sed 's|.*:||' dic > pass
    paste -d '' login pass > baza

    Можно попробовать привести разделители к одному виду:
    sed -e s/\;/:/g где ; заменяется на :
    Но это тоже не не гарантирует чистоту.

    Я бы попробовал первый способ.
     
    DartPhoenix likes this.
  11. DartPhoenix

    DartPhoenix Well-Known Member

    Joined:
    15 Sep 2013
    Messages:
    281
    Likes Received:
    4,211
    Reputations:
    5
    За login:pass - зачот автоматом.
     
  12. BillyBons

    BillyBons Active Member

    Joined:
    1 Dec 2016
    Messages:
    223
    Likes Received:
    111
    Reputations:
    13
    Некоторые варианты предложили выше, да и под Linux возможностей работы со строками масса. Я бы сначала предложил остановиться на алгоритме - определиться, как мы будем обрабатывать эти строки таким образом, чтобы не потерять данные и исключить ложные срабатывания (имеем ввиду, что в пароле могут встречаться симовлы "@" и ":", а все почтовые домены все равно перечислить нереально).

    Итак,
    а) первая (нужная) строка (логин) - это все символы с начала строки до первого символа "@"
    б) вторая (ненужная) строка (имя почтового домена) - это все символы, начиная с первого встречающегося в строке символа "@" до символа ":"
    в) третья (нужная) строка (пароль) - это все символы, начиная с первого встречающегося в строке символа ":" и до конца строки.

    Поскольку bash был выше - вот примеры работы со строками на Powershell (Windows):

    Code:
    $str="nitro92@bk.ru: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", после чего вся логика поедет коту под хвост.
     
    #12 BillyBons, 14 Mar 2019
    Last edited: 14 Mar 2019
    hydra likes this.
Loading...