LINUX.ORG.RU

Помогите с grep

 


0

1

Подскажите пожалуйста регулярное выражение для grep, чтобы найти строку в которой: есть две цифры подряд ( не более ), потом идет n символов (причем первый и последний символ не может быть цифрой), потом опять две какие либо цифры подряд, потом опять n символов, и так далее всего 4 раза ( не более). Пример строки: dfdsg=64dfgr54fghj54df4f21 Причем число n неизвестно заранее, просто между цифрами должно быть одинаковое кол-во символов. Буду очень благодарен за помощь!

Ответ на: комментарий от lenalena919

linux

Ты хотел сказать GNU/Linux. Хотя даже скорее просто GNU. Чем gcc или bash не стандартные средства?

sudopacman ★★★★★
()
Последнее исправление: sudopacman (всего исправлений: 1)

Жути какие
Я бы порекомендовал использовать для тренировки какой-нибудь онлайн regexp builder, потыкаешь его пару недель и потом проснёшься среди ночи с криком «я понял регулярки!»

zolden ★★★★★
()

подскажите как реализовать тот момент, что между цифрами должно быть одинаковое кол-во символов

lenalena919
() автор топика

Регулярка для Lua: (%d%d%w%w%w%w%d%d%w%w%w%w%d%d%w%w%w%w%d%d), но это на Lua, и совершенно тупая. Можно красивее, элегантнее, гибче, но пока ты сам не хочешь думать, тебя будут посылать в Job.

r3lgar ★★★★★
()
Ответ на: комментарий от lenalena919

как реализовать тот момент, что между цифрами должно быть одинаковое кол-во символов

Регекспами без красноглазия 80 уровня никак.

Deleted
()
Ответ на: комментарий от lenalena919

Зачем тебе это нужно?
Задача - найти числа между мусором.
Подставь нужный набор символов в []*

blackst0ne ★★★★★
()
Последнее исправление: blackst0ne (всего исправлений: 1)

Для начала найди все строки с цифрами:
echo 64dfgr54fghj54df4f21; echo ggggg4; echo hhhh | grep [0-9]

torvn77 ★★★★★
()
Ответ на: комментарий от Deleted

Ну вот кстати это самое красноглазие 80 лвл меня например тоже всегда интересовало, только почему-то даже такая простая вещь нигде не объясняется. Наверняка не больше минуты займёт у тех, кто понимает, как это работает. Но они почему-то не хотят делиться навыками.

anonymous
()
Ответ на: комментарий от anonymous

Конкуренции боятся, вестимо. Подлые людишки.

Конкуренции? Какой в ж... конкуренции?

Ему намекают, что он неправильно вопросы задаёт!

Если бы он написал: «Вот есть такая задача, вот мой код, но тут что-то неправильно, помогите поправить». Ему бы через 15 минут накидали решение.

А сейчас это выглядит так: «Вот есть такая задача. Решите за меня! Да, чтобы быстро! Пока я свою Ягу не успел допить!» Какой человек в здравом уме будет нормально отвечать на такое? Только шутки-прибаутки, сарказм, агрессия и т.д.

Психология, еп-та!

justAmoment ★★★★★
()
Ответ на: комментарий от gssomi

Нет, не так. Твоя регулярка не удовлетворяет условия. Да и что за регулярка такая, что в ней каша из баша?

r3lgar ★★★★★
()
Ответ на: комментарий от justAmoment

В достаточной мере специалисты по регуляркам довольно редки, имхо. Мне вот тоже кажется, что их понимаю, поскольку использую уже лет 15 достаточно регулярно в работе, пока не начинается какая-то магия. Но с другой стороны это правильно — так узнают какие-то секреты и мнят себя профессионалами, коими на деле не являются. И так в любой сфере.

Но это безотносительно задачи в топике. Так мне видится решение в гипотетической возможности сохранить где-то количество совпавших в 1 раз символов, и матчить далее уже используя ставший известным параметр. Как это сделать я не представляю.

anonymous
()

одинаковое кол-во символов

регулярки - конечный автомат, там такое не реализуешь. Проще взять ЯП и распарсить. В (почти) любом дистре линуксе есть питон, баш или(и) перл. Возьми один из них. там и регулярки есть, если так хочется.

Dred ★★★★★
()
Ответ на: комментарий от anonymous

Обычно такую задачу решают посредством awk, там должно быть всё необходимое. Интересно можно ли составить подобную регулярку, да ещё такую, чтобы grep (весьма ограниченный даже в расширенном решиме) схавал.

anonymous
()

число n неизвестно заранее, просто между цифрами должно быть одинаковое кол-во символов

Как уже сказали - просто регулярками и grep-ом в общем случае это не решается

А вот если поверх этого bash или другой язык навернуть - вполне.

Буду очень благодарен за помощь!
lenalena919

Буду неоригинален и немодератором^W^W - TITS or GTFO!

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от anonymous

Да, вот по поводу grep и его регулярок у меня серьёзные сомнения, имелось в виду sed или что-то подобное, сейчас не помню.

anonymous
()
Ответ на: комментарий от anonymous

Конкуренции боятся, вестимо.

«Some people, when confronted with a problem, think «I know, I'll use regular expressions.» Now they have two problems.»

anonymous
()
Ответ на: комментарий от anonymous

grep (весьма ограниченный даже в расширенном решиме)

GNU grep может в pcre :)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.