@ivan_shevchenko

Почему sed неверно обрабатывает вхождения (регулярные выражения)?

Всем здравствуйте!
Задача:
Есть строка с тегами, из нее необходимо вытащить Comanda1 и Comanda2.
</td><td class="tdteamname2">Comanda1</td><td class="tdteamname2">Comanda2</td>


Я решил реализовать задачу через sed. С другими тегами такой вариант вполне успешно прошел, по этому хочу попросить Вас помочь разобраться почему sed неправильно обрабатывает вхождения на этом теге.

Реализация(для наглядности короткая версия кода и --- вместо ничего):
Вхождения работают
[user@localhost share]$ cat  2str | sed 's/me2">/---/'
</td><td class="tdteamna---Comanda1</td><td class="tdteamname2">Comanda2</td>

И второе вхождение
[user@localhost share]$ cat  2str | sed 's/me2">/---/2'
</td><td class="tdteamname2">Comanda1</td><td class="tdteamna---Comanda2</td>


Но проблема возникает когда я хочу очистить с самого начала строки, так как у меня это реализовано в других тегах. Sed просто игнорирует первое вхождение. Явно указывать на каком вхождении надо выполнить тоже пробовал.
[user@localhost share]$ cat  2str | sed 's/<.*me2">/---/'
---Comanda2</td>

Уточнение: другие теги из которых я вытаскивал информацию и это успешно произошло, были уникальными в строке.

К сожалению ничего не смог нагуглить по данной проблеме. Прошу Вас помочь разобраться с данной проблемой.
Заранее спасибо!
  • Вопрос задан
  • 183 просмотра
Пригласить эксперта
Ответы на вопрос 3
vaut
@vaut
То что вы ищите называется "не жадное сопоставление" или "не жадный поиск".
Насколько я знаю его в sed нет.
Ответ написан
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Если у вас количество символов (читай - тэги) всегда одинаковое, проще не заморачиваться регулярками, а просто откусить нужные части строки, например, с помощью tr.
Ответ написан
Комментировать
shambler81
@shambler81 Куратор тега Linux
раз.
https://github.com/EricChiang/pup
2. если нужно спарсить что-то сложное но не на постоянной основе, обучится даже школьник.
https://chrome.google.com/webstore/detail/web-scra...
3. для этого вообще лучше подходят спец проги xmlstarlet, html-xml-utils .... и тд
4.
cut -d '>' -f3 111.txt | sed 's/<\/td//g' 1 переменная
cut -d '>' -f5 111.txt | sed 's/<\/td//g' 2 переменная
5ec80860ac569194842808.png
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы