我正在编写一个 bash shell 脚本,我希望最终可以使用它来自动命名扫描文档并将其“附加”到我们的数据库。脚本 OCR 是 pdf 第一页的一部分,并输出一个包含三行的文本文件;名称、唯一 ID 和日期时间字符串:
Smith, John
案例编号:234567 ( ) 2013 年 9
月 4 日上午 11:34
我想要做的是最终得到两个单独的字符串作为变量,"Smith, John"和"234567"。我正在寻求使用 sed/awk/etc 的正则表达式来提取此数字的帮助。一个问题是 OCR 很少会输出如下字符串:
"Case #2 234567 ( )"
或者
"Ca$e # 2234567 ( 7"
因此,我正在考虑获取字符串中唯一的最后 6 位数字,因为其中只有 10,000 多个中可能只有 1 个错误地读取了最后 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
任何关于为什么这可能不是一个好方法的输入,或者可以改进的地方都是(非常)受欢迎的。