我正在寻找一种方法从我下载的各种声明PDF中提取声明日期。
使用mdimport -d2
(在Mac上)我可以获取该文件的Spotlight索引元数据,其中包含一个名为kMDItemTextContent
的字段,其中包含PDF的所有文本。
现在我需要创建一组规则来从此文本中提取语句日期,该文本因文件而异,并将其转换为标准yyyy-mm-dd
格式。
我不确定是否应该使用sed
或grep
或awk
...以及使用哪些参数。
以下是文本相关部分的一些示例以及所需结果:
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
答案 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天结算周期"单独出现在一行(因此,在两个换行符之间)。