Как использовать GREP для сопоставления строки с кавычками внутри нее? - PullRequest
0 голосов
/ 04 июня 2019

Я ищу совпадение строки в группе файлов HTML.Я ищу все соответствующие экземпляры формы:

="https://  ...  .mp4"

Имейте в виду, что они не в отдельных строках.Все они сгруппированы без пробелов, поэтому возврат реальных строк не будет работать.

Я хочу, чтобы GREP вернула все сгруппированные экземпляры этого типа URL.Я хочу вывод уникальных ссылок, таких как:

="https://www.something.com/file1.mp4"
="https://www.something.com/file2.mp4"
="https://www.something.com/file3.mp4"
="https://www.something.com/file4.mp4"

Вот параметр поиска, который, как я думал, мне понадобится:

grep -hRo '\="https://.*\.mp4"\>' *.html

Двойные кавычки и знак равенства должны бытьчасть реальной строки поиска, но они портят мой результат, и я не могу понять, как избежать их правильно.

Я запускаю это на OSX в терминале.Любая помощь будет оценена.

1 Ответ

2 голосов
/ 04 июня 2019

При традиционном регулярном выражении двойные кавычки экранируются одинарными кавычками.Вам нужно только экранировать квантификатор + (один или несколько) и буквальную точку в .mp4

grep -o '="http[^"]\+\.mp4"'

С PCRE, доступным в GNU Grep, вы можете фактически сопоставить (без печати) ведущий/ трейлинг равно / двойные кавычки с Lookarounds:

grep -Po '(?<==")http[^"]+\.mp4(?=")'
  • (?<= ... ) - lookbehind
  • (?= ... ) - lookahead

возвращает:

https://www.something.com/file1.mp4
https://www.something.com/file2.mp4
https://www.something.com/file3.mp4
https://www.something.com/file4.mp4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...