Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Помогите с регулярным выражением.  (Прочитано 146 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн superguest

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Помогите с регулярным выражением.
« : 01 Октябрь 2016, 11:25:06 »
Здрасте, нужна помощь, ничего не понимаю в регулярках.

Есть список с разными именами файлов, среди них встречаются похожие, которые различаются лишь индексом. Нужно из всех повторяющихся записей, если они есть, вывести одну с наибольшим индексом и скрыть остальные одинаковые, если их нет, то выводить список дальше, выглядит список примерно так:

libfontconfig1_2.11.94-0ubuntu1.1+aptbuild1_i386.deb
...
libgconf-2-4_3.2.6-3ubuntu6+aptbuild1_i386.deb
libgconf-2-4_3.2.6-3ubuntu6+aptbuild2_i386.deb
...
libgconf-2-4_3.2.6-3ubuntu6+aptbuild9_i386.deb
...
libp11-kit-gnome-keyring_3.18.3-0ubuntu2+aptbuild1_i386.deb

Можно ли такое сделать в пайпе?

Начало примерно такое:
ls|grep deb|grep -v "\-d\(ev\|oc\│bg\)_"| ???
« Последнее редактирование: 01 Октябрь 2016, 11:35:52 от superguest »

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5660
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Re: Помогите с регулярным выражением.
« Ответ #1 : 01 Октябрь 2016, 12:27:20 »
Код: Bash
  1. ls -rv | sed ':a;N;/\(.\+\)[0-9]\+_.*\n\1/s/\n.*//;ta;P;D'
« Последнее редактирование: 01 Октябрь 2016, 12:36:14 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн superguest

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Re: Помогите с регулярным выражением.
« Ответ #2 : 01 Октябрь 2016, 12:34:32 »
Azure, спасибо..  но там попадаются повторяющиеся
Код: HTML5
  1. ls -rv | sed ':a;N;/\(.\+\)[0-9]\+_i386.deb\n\1/s/\n.*//;ta;P;D'
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 01 Октябрь 2016, 12:47:50 от Azure »

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5660
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Re: Помогите с регулярным выражением.
« Ответ #3 : 01 Октябрь 2016, 12:35:45 »
Поправил.
Ещё вариант
Код: Bash
  1. ls -rv | sed 'G;/\(.\+\)[0-9]\+_.*deb\n\1/d;s/\n.*//;h'
« Последнее редактирование: 01 Октябрь 2016, 12:37:34 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн superguest

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Re: Помогите с регулярным выражением.
« Ответ #4 : 01 Октябрь 2016, 12:41:37 »
Это то что нужно.
Спасибо огромное:)

Всё ок. Работает.
« Последнее редактирование: 01 Октябрь 2016, 13:11:39 от superguest »

 

Страница сгенерирована за 0.085 секунд. Запросов: 24.