如何从银行对账单PDF中解析日期

时间:2014-04-10 21:51:18

标签: parsing sed awk grep

我正在寻找一种方法从我下载的各种声明PDF中提取声明日期。

使用mdimport -d2(在Mac上)我可以获取该文件的Spotlight索引元数据,其中包含一个名为kMDItemTextContent的字段,其中包含PDF的所有文本。

现在我需要创建一组规则来从此文本中提取语句日期,该文本因文件而异,并将其转换为标准yyyy-mm-dd格式。

我不确定是否应该使用sedgrepawk ...以及使用哪些参数。

以下是文本相关部分的一些示例以及所需结果

Jan. 23, 2014 31 Days in Billing Cycle - > 2014年1月23日

Service period 02/03 - 03/02 - > 2014年3月2日

Statement Date: February 3, 2014 - > 2014年2月3日

Statement Closing Date 04/04/2014 - > 2014年4月4日

Statement Period Jan 6 - Feb 5, 2014 - > 2014-02-05

1 个答案:

答案 0 :(得分:0)

这是第一种模式的awk解决方案;你可以用它作为其余的基础:

> echo "Jan. 23, 2014 31 Days in Billing Cycle" |
  awk 'BEGIN { split("Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec",
                     months, "|") }
       /Days in Billing Cycle/ { printf("%d-%02d-%d\n", $3,
                                        months[substr($1,1,3)]+1,
                                        substr($2, 1, length($2)-1)) }'
2014-01-23

我假设文本" Jan。 23,2014 31天结算周期"单独出现在一行(因此,在两个换行符之间)。