Modificando o resultado da pesquisa do grep

0

Normalmente, podemos pesquisar um keyword em uma lista de arquivos PDF usando o seguinte comando:

for file in *pdf; do 
pdftotext "$file" - | grep keyword
done

Agora, no resultado da pesquisa, se eu quiser encontrar o nome do título junto com os autores / escritores do arquivo manualmente, sem usar o comando pdfinfo , o que terei que fazer?

    
por chaos 11.09.2015 / 06:49

1 resposta

1

Quando você converte um arquivo PDF com pdftotext , a meta informação é perdida. Mas, pdftotext tem uma opção interessante:

-htmlmeta
       Generate a simple HTML file, including the meta information.  This simply wraps the 
       text in <pre> and </pre> and  prepends the meta headers.

Agora, você também pode buscar as metainformas:

pdftotext -htmlmeta file.pdf - | \
  grep -oP '.*keyword.*|<title>\K.*(?=</title>)|<meta name="Author" content="\K.*(?="/>)'

Isso pesquisará keyword no arquivo PDF. Em seguida, separados por | outros 2 padrões de pesquisa serão extraídos do documento: o título e o autor do documento. O resultado é assim:

title of the document
author of the document
search pattern

Ou use perl , que pode formatar o texto após uma correspondência, ao contrário de grep :

pdftotext -htmlmeta file.pdf - | perl -ne '/keyword/ && print "Pattern: $_"; /<title>(.*)<\/title>/ && print "Title: $1\n"; /<meta name="Author" content="([^"]+)/ && print "Author: $1\n"'

A saída parece então:

Title: title of the document
Author: author of the document
Pattern: bla bla search pattern bla bla
    
por 11.09.2015 / 08:27