Передача PCRE grep в sed

Передача PCRE grep в sed

Я хочу использовать sed для этого файла, но BRE в sed работает не так хорошо, как я надеюсь.

Сейчас у меня есть по сути только:

$ cat Dungeon | grep -P -o '<\/.*?>'

Мой вопрос в том, как мне сделать sed? Я хочу удалить части, которые мне удалось grep. Альтернативы также приветствуются; хотя, если возможно, я хочу знать, как это сделать.

(Да, я использую регулярные выражения в HTML)

решение1

Используйте инструмент «PCRE sed»:

cat Dungeon | perl -pe 's/<\/.*?>//g'

perl -i -pe 's{</.*?>}{}g' Dungeon

Объединение grep и sed вряд ли произойдет; эти два не обмениваются достаточным контекстом, чтобы передать существующие совпадения с их позицией в файле. Вы можете попробовать grep -bполучить байтовые смещения каждого совпадения (и использовать их счто-то еще, кроме sedчтобы удалить соответствующие диапазоны байтов из файла), или попробуйте преобразовать grep -oвывод в гигантское регулярное выражение, подходящее для расширенных регулярных выражений POSIX sed (заменив переносы строк на вертикальные черты для a|b|cсинтаксиса ветвления, убедившись, что все специальные символы регулярных выражений экранированы — для этого потребуется еще один вызов 'sed'), но в любом случае это потребует гораздо больше усилий, чем пользы.

Связанный контент