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

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

  1. ExQ

    ExQ Banned

    Joined:
    8 Apr 2010
    Messages:
    17
    Likes Received:
    9
    Reputations:
    0
    текст, нужно 10 - 20 человек
     
    #1 ExQ, 13 Mar 2019
    Last edited: 8 Dec 2020
  2. SladerNon

    SladerNon Ученик Христа

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

    BillyBons Active Member

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

    DartPhoenix Elder - Старейшина

    Joined:
    15 Sep 2013
    Messages:
    1,082
    Likes Received:
    8,210
    Reputations:
    25
    gvim. Вообще это текстовый редактор... но можешь с его помощью свершить сие в краткий срок секунд 10.
     
  5. DartPhoenix

    DartPhoenix Elder - Старейшина

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

    rudi Active Member

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

    hydra Elder - Старейшина

    Joined:
    24 Jul 2015
    Messages:
    3,112
    Likes Received:
    33,153
    Reputations:
    60
    Надёжней,удалять домены так:
    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 где ; заменяется на :
    Но это тоже не не гарантирует чистоту.

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

    DartPhoenix Elder - Старейшина

    Joined:
    15 Sep 2013
    Messages:
    1,082
    Likes Received:
    8,210
    Reputations:
    25
    За login:pass - зачот автоматом.
     
  9. BillyBons

    BillyBons Active Member

    Joined:
    1 Dec 2016
    Messages:
    221
    Likes Received:
    119
    Reputations:
    13
    Некоторые варианты предложили выше, да и под 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", после чего вся логика поедет коту под хвост.
     
    #9 BillyBons, 14 Mar 2019
    Last edited: 14 Mar 2019
    hydra likes this.
Loading...