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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

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

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

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Помогите с регулярным выражением.
« Ответ #1 : 01 Октября 2016, 12:27:20 »
Код: (bash) [Выделить]
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) [Выделить]
ls -rv | sed ':a;N;/\(.\+\)[0-9]\+_i386.deb\n\1/s/\n.*//;ta;P;D'
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 01 Октября 2016, 12:47:50 от Azure »

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Помогите с регулярным выражением.
« Ответ #3 : 01 Октября 2016, 12:35:45 »
Поправил.
Ещё вариант
Код: (bash) [Выделить]
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.047 секунд. Запросов: 23.