Shell Script для проверки содержимого файлов PDF - PullRequest
0 голосов
/ 28 марта 2020

Есть ли способ проверить содержимое PDF-файлов и вывести указанную строку?

С помощью этого сценария оболочки я получаю все файлы в al oop

#!/bin/bash

FOLDER_NAME="pdffiles"

for fileName in "${FOLDER_NAME}"/*.pdf; do
        echo ${fileName}
        echo ""
done

Теперь я поиск решения для проверки любого контента и получения контента с помощью регулярных выражений. Я попытаюсь написать samlpe

result=$(ls -l | pdfgrep -ei "hallo.*name" YourFile.pdf)
if [ ! -z "$result" ]
then
    # I don't know if the regex is correct
    specifiedNumber="/My specified String(\s+)(\d+)/" #Content is "My specified string   234524346"
    echo $specifiedNumber #Result 234524346
fi

В данный момент я пробую pdfgrep, но я не могу найти решение для моего регулярного выражения и двух условий if

Спасибо за любую помощь

РЕДАКТИРОВАТЬ: Это мой новый сценарий

for fileName in "${FOLDER_NAME}"/*.pdf; do

        result=$(pdfgrep -i "company.*invoice" "$fileName")
        if [ ! -z "$result" ]
        then
                number=$(pdfgrep -Po '(?<=Invoicenumber)\s+\d+' "$fileName")
                echo "Company - $number"
        fi
done

1 Ответ

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

Обновленный ответ

Хорошо, я думаю, вы ищете "My specified string NNN" в любом PDF, поэтому вам нужен Perl PCRE с pdfgrep -Po, например:

pdfgrep -Po '(?<=My specified string )\d+' *.pdf 

Оригинальный ответ

Я думаю, вы имеете в виду, что хотите найти либо из двух вещей в PDF:

pdfgrep -e "hallo|name" YourFile.pdf

Или, может быть, вы хотите найти оба из двух вещей:

pdfgrep "hallo" YourFile.pdf && pdfgrep "name" YourFile.pdf && echo "Both present"

Или вы можете получить список всех файлов, которые содержат "string1", с помощью:

pdfgrep -l "string1" *pdf

Или, получите список файлов, которые содержат «string1», а затем ищите «string2» только в этих файлах:

pdfgrep -lZ "string1" *pdf | xargs -0 pdfgrep -l "string2"
...