строки grep между "{{_ (" и ")}}" - PullRequest
1 голос
/ 27 марта 2020

Я хочу проанализировать html файлы для извлечения строк между "{{_ (" и ")}}" с помощью GREP. Я пробовал что-то вроде этого:

grep '"[^{{_(|)}}$]"' *.html

, но это не сработало.

Может кто-нибудь помочь мне, пожалуйста?

Спасибо!

Ответы [ 3 ]

1 голос
/ 27 марта 2020

@ Ответ Виктора Стрибижева работает очень хорошо. Однако, если у вас есть несколько файлов, вы получите такой вывод, где также отображается соответствующее имя файла для каждого совпадения:

foo.html: content abc
foo.html: test 123
bar.html: first match
bar.html: second match

Так что, если вас интересует только совпадающая строка в качестве вывода , вы можете попробовать sed вместо

sed -n 's/.*{{_(\(.*\))}}.*/\1/p' *.html

Вы также можете посчитать уникальное вхождение совпадений и тому подобное ...

Обновление:

Или просто использовать -h | --no-filename с grep, предоставленным @Wiktor Stribiżew.

grep -h -oP '(?<={{_\().+?(?=\)}})' *.html

или флаг -c для отображения количества совпадений для каждого файла:

grep -c -oP '(?<={{_\().+?(?=\)}})' *.html
1 голос
/ 27 марта 2020

Вы можете использовать

grep -oP '(?<={{_\().+?(?=\)}})' file

Подробности

  • -o - выводить только совпадающие подстроки
  • -P - включить механизм регулярных выражений PCRE
  • (?<={{_\().+?(?=\)}}) match:
    • (?<={{_\() - местоположение, которому непосредственно предшествует {{+(
    • .+? - любое 1 или более символы, отличные от символов разрыва строки, как можно меньше
    • (?=\)}}) - местоположение, за которым сразу следует )}}.

См. regex demo .

0 голосов
/ 27 марта 2020

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

placeholder = "SOME TEXT_HERE" -> grep -> "SOME TEXT_HERE"

grep -oP '(? <= placeholder = "). +? (? =")' *html</p>

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