Вопрос по TextPipe

Discussion in 'Болталка' started by Regga5, 25 Jan 2014.

  1. Regga5

    Regga5 New Member

    Joined:
    3 Nov 2012
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Приветствую. Помогите пожалуйста разобраться с ситуацией.

    Как удалить строки, которые содержат только цифры?
    Как удалить строки, в которых есть "шт" (только целые слова и "шт" сразу после символов, например 100шт, 2шт)?
    Как удалить строки которые начинаются с символов? Например "01234567890" или "5448вебмастер" или "348953948 вебмастер"
    Как просеять строки по фильтру а-я, a-z, 0-9? Оставив строки, в которых нет каких либо любых спец. символов, а только буквы и символы.

    Я думаю с TextPipe много кто знаком :).

    Спасибо.
     
  2. madhatter

    madhatter Member

    Joined:
    7 Aug 2013
    Messages:
    562
    Likes Received:
    50
    Reputations:
    54
    Впервые слышу. Очередной грепо-велосипед за деньги, мм?
    Я так понимаю, под словом "символ" вы имеете в виду цифру? Любая, на минуточку, не пустая строка начинается с символа. Более того - она вообще только из символов и состоит.
    Code:
    grep -vE "^[0-9]+$"
    grep -vE "[0-9]+шт"
    grep -vE "^[0-9]"
    grep -E "^[0-9a-zA-Z]+$"
    Почитайте что-нибудь в духе "regular expressions for complete idiots". Или просто мануал грепа. И такие вопросы отпадут сами собой.
     
  3. Regga5

    Regga5 New Member

    Joined:
    3 Nov 2012
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    хорошо
    спасибо
     
  4. Regga5

    Regga5 New Member

    Joined:
    3 Nov 2012
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Я так понял команда делает выборку из слов а не из предложений в строке.

    Тоесть такое фильтрует

    Такой вариант оставляет

    И вместе с тем фильтрует все строки в которых есть пробел \ пробелы.

    Как команду подогнать?

    Тему уже копаю, пригодится.
     
  5. madhatter

    madhatter Member

    Joined:
    7 Aug 2013
    Messages:
    562
    Likes Received:
    50
    Reputations:
    54

    >> Как просеять строки по фильтру а-я, a-z, 0-9? Оставив строки, в которых нет каких либо любых спец. символов, а только буквы и символы.

    Именно это оно и делает, если учесть, что у вас символ == цифра.
     
  6. Regga5

    Regga5 New Member

    Joined:
    3 Nov 2012
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    символ - !"№;, тоесть спец. символ.
    Цифры и буквы должны быть :).

    Команда работает, но немного не так.

    Фильтрует
    тоесть что мне и нужно убрать.

    Такой вариант оставляет
    И вместе с тем, пропадает и
    Я так понял я немного не так расписал.

    ps: скорей всего пробел тоже считается "спец. символом", нужно добавить его в исключения.
     
    #6 Regga5, 26 Jan 2014
    Last edited: 26 Jan 2014
  7. madhatter

    madhatter Member

    Joined:
    7 Aug 2013
    Messages:
    562
    Likes Received:
    50
    Reputations:
    54
    Пробел, не поверите, является пробельным символом, для которых даже своя группа есть, как для буквенных или числовых.

    Code:
    grep -E "^[0-9a-zA-Z\s]+$"
     
  8. Regga5

    Regga5 New Member

    Joined:
    3 Nov 2012
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Спасибо.
    Мне вот такое подошло.

    Есть еще такая команда

    ^([^\s]+\s?){0,7}$

    Под эту команду должны попадать строки в которых меньше 7 слов - так оно и есть. Но видимо команда написана не правильно, при больших объемах программа уходит в ерор. Да и сам процесс длительный, что очень странно.

    С ней все в порядке? :)

    p/s: видимо я порядком поднадоел :)
     
    #8 Regga5, 29 Jan 2014
    Last edited: 29 Jan 2014
  9. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    Слова в предложениях разделяются пробелами а у тебя получается \s ето любой символ.
    Укажи просто по колхоз-стайлу, пробел запиши как пробел)) :
    Под регулярку попадут строки где пробелов от 1 до 7.
     
  10. Regga5

    Regga5 New Member

    Joined:
    3 Nov 2012
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    не работает :)
    (попадают все строки, даже где нет пробела)
     
    #10 Regga5, 29 Jan 2014
    Last edited: 29 Jan 2014
  11. madhatter

    madhatter Member

    Joined:
    7 Aug 2013
    Messages:
    562
    Likes Received:
    50
    Reputations:
    54
    Ерроры придуманы не просто так. Еррор в студию!
    Регулярки, конечно, штука сравнительно медленная, но что за объемы у вас такие?
    У меня самописный парсер sql-дампов на регулярках обрабатывает десятигиговый монолитный дамп за минуту.
     
  12. Regga5

    Regga5 New Member

    Joined:
    3 Nov 2012
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Да сравнительно не большие, ~5М строк (чуть больше 200 мб). Приблизительно каждая 4 строка больше 7-ми слов.

    [​IMG]

    [​IMG]

    Что интересно, я применял более 10 команд (да, с такими-то знаниями :)) - по процессу эта выполняется дольше всех (по обработанным мб). Обрывается где-то на 3%. В учебном прогоне все нормально, быстро, без ошибок.

    Вижу что там какой-то лимит, но я подозреваю что что-то не так с самой командой. Вроде не требуется все это сложить, разделить и вынести по корень :)

    Спасибо за интерес ;)
     
  13. madhatter

    madhatter Member

    Joined:
    7 Aug 2013
    Messages:
    562
    Likes Received:
    50
    Reputations:
    54
    Вы это чем вообще делаете? И еще раз - логи в студию.
    Это построчная обработка, то есть единственно где может оборваться - на ооочень длинной строке. И то, на машине с малым количеством ресурсов. Вы это часом не на какой-нибудь впске делаете?
     
  14. Regga5

    Regga5 New Member

    Joined:
    3 Nov 2012
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Нет, не на VPS. Кстати попробовать там стоит, есть хорошая машина, по мощнее моей будет. Но там проблемы с кириллицей.

    Строки вмещаются в первый экран, тоесть даже скрулов горизонтальных нет.

    А там очень содержательный лог файл :)

    Обрабатывает 16к строк и ложится.
     
  15. madhatter

    madhatter Member

    Joined:
    7 Aug 2013
    Messages:
    562
    Likes Received:
    50
    Reputations:
    54

    Вы знаете, я уже не раз это говорил, но ерроры не просто так придуманы. Написано же черным по белому.

    ruby -ne 'puts $. if $_.size > 64' filename
    Где filename - ваш лист. Покажет все строки, длина которых больше 64. Подозреваю, у вас там строка на несколько мегабайт, но для начала и так пойдет. Найдите эту противную строку.
     
  16. Regga5

    Regga5 New Member

    Joined:
    3 Nov 2012
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Спасибо за совет :)
    Но в Руби я разбираюсь не больше чем в регулярных выражениях.

    Поставил, запустил, прописал - :confused:
    Даже на простейшие команды не откликается.

    Наверное более эпик-пользователя на этом форуме нет :)

    Есть способ для ребят из века "окон"? :)

    -------------------------------------------------------------

    Строк более 200 символов (с пробелами) не найдено.
     
    #16 Regga5, 30 Jan 2014
    Last edited: 30 Jan 2014
  17. madhatter

    madhatter Member

    Joined:
    7 Aug 2013
    Messages:
    562
    Likes Received:
    50
    Reputations:
    54
    Сделайте это человеческим грепом уже, а не виндовым говноклоном. Чтобы регулярка убежала в лимит по рекурсии, строка должна быть *очень*, *очень* длинной. Или софт должен быть реализован косячно.
     
  18. Regga5

    Regga5 New Member

    Joined:
    3 Nov 2012
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Мне все ровно на чем делать, главное результат :)
    Только подскажите куда жать :)

    -----------------------


    Вообщем разрезал файл на куски по 500к - вроде не вылетает.

    Может софт загружал в ОЗУ или еще куда все строки и там их колотил...

    отпишусь

    ----------------------------

    та же история
     
    #18 Regga5, 30 Jan 2014
    Last edited: 30 Jan 2014
Loading...
Similar Threads - Вопрос TextPipe
  1. Shawn1x
    Replies:
    5
    Views:
    1,878
  2. G0mer
    Replies:
    1
    Views:
    1,231