Ваша команда будет захватывать содержимое всех строк href href="..."
, которые полностью существуют в одной строке.
Вам не нужно индивидуально экранировать двойные кавычки \"
, если вся строка окружена 'single quotes'
. Смысл цитирования состоит в том, чтобы предотвратить интерпретацию символов оболочкой. Единственный раз, когда вам нужно экранировать двойные кавычки, это когда вы разрешаете расширения, например ::10000
foo=href
grep -Po "(?<=${foo}=\")[^\"]*"
Это точно идентично
grep -Po '(?<=href=")[^"]*'
Что означает
- Grep, используя
P
CRE
- возврат
o
только совпадение
- ищите любую строку, которой предшествует
(?<=...)
буквенная строка href="
- соответствует всему, что не является двойной кавычкой
[^"]
- ноль или более раз
*
Использование *
может вернуть пустую строку, если вы когда-нибудь проанализируете <a href="">
. Вы можете использовать +
(один или несколько раз) вместо *
(ноль или более раз).