grep / pdfgrep perl regex для проверки нескольких строк - PullRequest
0 голосов
/ 01 апреля 2020

Я хочу проверить, есть ли в моем тексте другие слова. Эти слова в полном тексте. Но я не нахожу регулярное выражение для grep / pdfgrep с perl regex.

My text with foo with other text and
many many
other lines
in the same text
for bar and i don't know

Мое регулярное выражение для pdfgrep (аналогично grep)

pdfgrep -i -P "foo.*bar" mypdf.pdf

Это не работает , потому что слова находятся на разных строках. Я пробовал много других регулярных выражений как. *, Где я нашел для других регулярных выражений:

(?s).*
([\s\S]*)
(.*?)

и многих других. Предоставляет решение для grep / pdfgrep, чтобы найти это?

Я проверю, вставил ли мой pdf-файл все искомые слова

РЕДАКТИРОВАТЬ: Для меня теперь работает эта команда. Спасибо Пьеру Франсуа

# Find foo AND bar
pdftotext mypdf.pdf - | tr '\n' ' ' | grep -P 'foo.*?bar'
# Find foo OR bar
pdftotext mypdf.pdf - | tr '\n' ' ' | grep -P 'foo|bar'
# The same Commands but with pdfgrep
# Find foo AND bar
pdfgrep -i -P ".*" mypdf.pdf | tr '\n' ' ' | grep -P 'foo.*?bar'
# Find foo OR bar
pdfgrep -i -P ".*" mypdf.pdf | tr '\n' ' ' | grep -P 'foo|bar'

Coimmand с Sed работает, но только найти Foo ИЛИ бар, а не Foo И бар

1 Ответ

0 голосов
/ 01 апреля 2020

Если у вас установлен pdftotext , вы можете использовать другие методы, кроме grep , чтобы получить регулярное выражение, действующее в нескольких строках. Попробуйте:

pdftotext mypdf.pdf - | sed -e '/foo/,/bar/p' -e d

Первая команда извлекает текст из файла PDF в стандартный поток вывода, а вторая печатает все строки, начиная с одной, содержащей foo, в другую, содержащую bar, и удаляет все остальные строки из вывода.

Редактировать

Другое решение с pdftotext , tr и grep следующий:

pdftotext mypdf.pdf - | tr '\n' ' ' | grep -P 'foo.*?bar'

Команда tr используется здесь для преобразования каждого символа новой строки в пробел. Я использовал не жадный модификатор ? в регулярном выражении из grep , который доступен только с опцией -P для случая, когда вы должны сопоставить отдельно несколько вхождений одной и той же строки.

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