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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Регулярное выражение для sed (bookmarks.html)  (Прочитано 833 раз)

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

Оффлайн Grrrrrow

  • Автор темы
  • Активист
  • *
  • Сообщений: 321
    • Просмотр профиля
Хочу почистить файл закладок браузера bookmarks.html и удалить "километровые" ссылки и данные для иконок (значков).
Нужно составить регулярное выражение которое бы во всех строках удалило все между:
LAST_MODIFIED="10ти_значное_число" и до знака >
Сам перепробывал массу вариантов выражений из разных примеров, статей, и.т.д
Получилось только типа "найти LAST_MODIFIED="10ти_значное_число" и удалить"
"найти > и удалить"

Пример (как должно быть):
(Нажмите, чтобы показать/скрыть)

Благодарю.
« Последнее редактирование: 15 Апреля 2015, 07:20:22 от Grrrrow »

Оффлайн ARTGALGANO

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1936
    • Просмотр профиля
Re: Регулярное выражение для sed (bookmarks.html)
« Ответ #1 : 15 Апреля 2015, 13:29:37 »
навскидку
(LAST_MODIFIED="\d*")(.*)"(>yandex.ru</A>)
заменить
\1\3

Оффлайн Grrrrrow

  • Автор темы
  • Активист
  • *
  • Сообщений: 321
    • Просмотр профиля
Re: Регулярное выражение для sed (bookmarks.html)
« Ответ #2 : 15 Апреля 2015, 16:08:04 »
ARTGALGANO,
Извени непонял  :(

sed -i '/(LAST_MODIFIED="\d*")(.*)"(>yandex.ru</A>)/' bookmarks.html

так чтоли?

а \1\3 куда?

yandex.ru - это только пример. Поэтому нужно именно до знака >
« Последнее редактирование: 15 Апреля 2015, 16:18:18 от Grrrrow »

Оффлайн ARTGALGANO

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1936
    • Просмотр профиля
Re: Регулярное выражение для sed (bookmarks.html)
« Ответ #3 : 15 Апреля 2015, 17:38:15 »
исправил.
sed  -i 's/\(LAST_MODIFIED="[0-9]*"\)\(.*\)\(>\)/\1\3/'
удаляет от LAST_MODIFIED="1388520000" до >
« Последнее редактирование: 15 Апреля 2015, 17:40:36 от ARTGALGANO »

Оффлайн Grrrrrow

  • Автор темы
  • Активист
  • *
  • Сообщений: 321
    • Просмотр профиля
Re: Регулярное выражение для sed (bookmarks.html)
« Ответ #4 : 15 Апреля 2015, 18:27:16 »
Не то. После выполнения получается

Из
(Нажмите, чтобы показать/скрыть)

       <DT><A HREF="http://www.yandex.ru/" ADD_DATE="1388520000" LAST_MODIFIED="1388520000">

А должно быть так
        <DT><A HREF="http://www.yandex.ru/" ADD_DATE="1388520000" LAST_MODIFIED="1388520000">yandex.ru</A>

Т.е все что после > не должно удалятся.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Регулярное выражение для sed (bookmarks.html)
« Ответ #5 : 15 Апреля 2015, 18:31:35 »
Это одна длинная строка? Можно чуть упростить:
Код: (bash) [Выделить]
sed  -i 's/\(LAST_MODIFIED="[0-9]\+"\)[^>]*/\1/' bookmarks.htmlЕсли несколько строк — надо будет чуть доработать.
Код: (bash) [Выделить]
a='LAST_MODIFIED="[0-9]+"'
sed -ir "/$a/{:1;/$a.+>/! {N;b1};s/($a)[^>]+/\1/}" bookmarks.html
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Grrrrrow

  • Автор темы
  • Активист
  • *
  • Сообщений: 321
    • Просмотр профиля
Re: Регулярное выражение для sed (bookmarks.html)
« Ответ #6 : 15 Апреля 2015, 18:42:31 »
Azure,
Теперь работает))
Второй вариант, т.к строк естественно много.

Спасибо.
« Последнее редактирование: 15 Апреля 2015, 18:44:21 от Grrrrow »

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Регулярное выражение для sed (bookmarks.html)
« Ответ #7 : 15 Апреля 2015, 18:47:52 »
Grrrrow,
Вы не поняли — регулярное выражение для одной строки или разделенное на несколько. А так любое обработает каждую строку.
P.S. Если работает — отметьте тему решенной и закройте.
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Grrrrrow

  • Автор темы
  • Активист
  • *
  • Сообщений: 321
    • Просмотр профиля
Re: Регулярное выражение для sed (bookmarks.html)
« Ответ #8 : 15 Апреля 2015, 18:55:30 »
Azure,
Да оба варианта работают :), отметил.

 

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