【发布时间】:2016-09-07 07:37:35
【问题描述】:
我在 bash 脚本中使用 pdftotext,试图从 PDF 邮资标签中提取姓名和地址。
一个示例 PDF 文件:
Delivered By:
1st Class
Postage on Account GB
First Last
HouseName
Street
Town
County
Postcode
Customer Reference: 12400 / 203 1
32224983765
RETURN TO: MyName,
DoorNumber, Street, Town,
City, Postcode, Country
121-0434 905 20200-000 6190 C228
Delivered By:
1st Class
Postage on Account GB
First Last
HouseNumber
Street
Town
Postcode
Customer Reference: 12401 / 200 1
32224286536
RETURN TO: MyName,
DoorNumber, Street, Town,
City, Postcode, Country
121-0434 905 20200-000 6190 C414
请注意:
- 地址没有固定长度,即。有些只有 4 行,我见过一些最多 6 行。
- PDF 文件中的地址数量不会提前知道。
到目前为止,我刚刚得到:
pdftotext label.pdf - | grep -A10 "Postage on Account GB" | tail -n+3 | head -n -3
- 避免创建文件。 grep -A10 输出匹配 "Postage on Account GB" 的前 10 行。 tail -n+3 删除匹配项和下一行。 head -n -3 删除最后 3 行。当文件中只有一个地址由 6 行组成时,这很好用,但当涉及到多个地址和不同长度时,我就卡住了。
简单地说,我想从Postage on Account GB 之后的空行之后提取数据,直到下一个空行之前的行。然后格式化输出,使地址以逗号分隔,并且每个都在一个新行上,例如:
First Last, HouseName, Street, Town, County, Postcode
First Last, HouseNumber, Street, Town, Postcode
【问题讨论】:
-
邮寄地址的问题是它们没有遵循固定的模式。