1

我正在使用这个命令:

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”——基本上是介于单词 Provider 和单词 Amount 之间的任何内容。

但是,当我运行该命令时,我得到的只是整行——而不仅仅是字符串“John Q Doctor”。我究竟做错了什么?

4

3 回答 3

2

使用 sed:

sed 's/.*Provider\(.*\)Amount.*/\1/'

使用 Grep(GNU):

grep -oP '(?<=Provider).*(?=Amount.*)'
于 2013-04-03T03:05:14.120 回答
1

sed range 命令适用于整个匹配行,如果它们在同一行上,请尝试以下操作:

pdftotext statement.pdf - | grep -m 1 "Provider" | 
     sed -n "s/Provider\(.*\)Amount/\1/p"
于 2013-04-03T03:05:14.943 回答
0
 sed -n '/Provider/{s/.*Provider\(.*\)Amount.*/\1/p;q}'

这应该工作+

于 2013-04-03T09:56:00.863 回答