【发布时间】:2013-09-04 17:30:35
【问题描述】:
我正在编写一个 bash shell 脚本,我希望最终能使用它来自动命名扫描文档并将其“附加”到我们的数据库。脚本 OCR 是 pdf 第一页的一部分,并输出一个包含三行的文本文件;名称、唯一 ID 和日期时间字符串:
史密斯,约翰
案例编号:234567 ( )
2013 年 9 月 4 日上午 11:34
我想要以两个单独的字符串作为变量结束,"Smith, John" 和 "234567"。我正在寻求使用 sed/awk/etc 的正则表达式来提取此数字的帮助。一个问题是 OCR 很少会输出如下字符串:
"Case #2 234567 ( )"
或
"Ca$e # 2234567 ( 7"
因此,我正在考虑获取字符串中唯一的最后 6 位数字,因为其中可能只有 10,000 多个数字中的最后 6 位数字读取不正确。此唯一 ID 只有 6 位数字,始终介于 200000-999999 之间。我正在学习正则表达式,但进展缓慢。非常感谢任何帮助。
编辑:
现在我正在使用:
casename="$(cat test.txt | sed '1!d')"
casenum="$(cat test.txt | sed -n -r 's/.*([0-9]{6}).*/\1/p')"
echo ${casenum} ${casename}
234567 Smith, John
任何关于为什么这可能不是一个好方法的意见,或者可以改进的地方是(非常)欢迎的。
【问题讨论】: