我正在使用此命令:
pdftotext statement.pdf - | grep -m 1 "Provider" | sed -n "/Provider/,/Amount/p"
该文件包含以下行:
Patient Jane Person Date 01/01/13 Provider John Q Doctor Amount $100
我想要的是命令返回“John Q Doctor” - 基本上是提供者和单词Amount之间的任何内容。
但是,当我运行该命令时,我得到的只是整行 - 而不仅仅是字符串“John Q Doctor”。我做错了什么?
答案 0 :(得分:2)
使用sed:
sed 's/.*Provider\(.*\)Amount.*/\1/'
使用Grep(GNU):
grep -oP '(?<=Provider).*(?=Amount.*)'
答案 1 :(得分:1)
sed range命令适用于整个匹配行,如果它们位于同一行,请尝试此操作:
pdftotext statement.pdf - | grep -m 1 "Provider" |
sed -n "s/Provider\(.*\)Amount/\1/p"
答案 2 :(得分:0)
sed -n '/Provider/{s/.*Provider\(.*\)Amount.*/\1/p;q}'
这应该有效+