【问题标题】:grep content from pdf file and write it partwise into variablesgrep pdf文件中的内容并将其部分写入变量
【发布时间】:2020-03-19 01:26:19
【问题描述】:

自我介绍一下,经过几天的搜索,我才刚刚开始加入堆栈溢出。 我正在做一个小项目,我的 RasPi 用说话的文件名整理我的 PDF 文档。

我将使用 pdfgrep grep 各种文件中的公司名称和日期。

代码如下:

#!/bin/bash

# set work directory
workpath=~pi/Documents/

find $workpath/ -iname '*.pdf' -print | while read FILENAME
do
        if pdfgrep -i --max-count 1 'company1' "${FILENAME}";
        then
                echo "$FILENAME";
                pdfgrep  --max-count 1 '(([0-9][0-9]{,1}\.)\s+('Januar'|'Februar'|'März'|'April'|'Mai'|'Juni'|'Juli'|'August'|'September'|'Oktober'|'November'|'Dezember')\s+([1-9][0-9][0-9][0-9]{1,}))' "${FILENAME}";
                echo "company1";
       elif pdfgrep -i --max-count 1 'company2' "${FILENAME}";
       then
               echo "$FILENAME";
               pdfgrep  --max-count 1 '('Datum:')\s+(([0-9][0-9]{,1}\.)([0-9][0-9]{,1}\.)([1-9][0-9][0-9][0-9]{1,}))'
               echo "company2";
        else
                echo "$FILENAME";
                echo "undefined document -- Error!!";
        fi
done

对于每个文件,我得到不同的内容:

公司名称

行为文件公司名称

公司名称和公司地址

还有更多不同的东西

日期也不同

dd.mm.yyyy

日期:dd.mm.yyyy

一些文字dd。年年月

_______________________dd.month yyyy

我正在寻找一种方法,只将所需的内容写入变量中,而不用周围的文字:

comp=公司名称

日期=yyyy

datem=mm / 这里我还需要知道如何将 month 转换为 mm

日期=dd

结果应该是:yyyymmdd-companyname.pdf

我从 bash 脚本开始,因为我正在使用 pdfgrep,而且我对编程语言不太熟悉。 也许我在 python 中做了一些代码:S

我们将非常欢迎您的帮助!

干杯,梦想

【问题讨论】:

    标签: linux bash variables grep filenames


    【解决方案1】:

    这不是一个完整的解决方案,而是一个提示列表。

    选项-o添加到pdfgrep命令应该只打印匹配的部分行,即消除额外的文本,如“日期:”等。

    pdfgrep -o --max-count 1 '(([0-9][0-9]{,1}\.)\s+('Januar'|'Februar'|'März'|'April'|'Mai'|'Juni'|'Juli'|'August'|'September'|'Oktober'|'November'|'Dezember')\s+([1-9][0-9][0-9][0-9]{1,}))' "${FILENAME}";
    

    由于您在

    中搜索特定公司名称
    if pdfgrep -i --max-count 1 'company1' "${FILENAME}";
    

    等你真的不需要输出,你可以使用你已知的公司名称来代替。你可以添加选项-q来抑制输出

    if pdfgrep -q -i --max-count 1 'company1' "${FILENAME}";
    

    所以剩下的任务是解析各种日期/时间格式,这可以使用 Python 或 Perl 中的 strptime 函数或 Python dateutil 库来完成。见Parsing a date that can be in several formats in python

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多