Grep从某些字符/单词读取到某个字符/单词

时间:2012-02-11 18:57:17

标签: shell unix curl grep

我使用curl我想得到它的某个短语,问题是整个文件(我用curl显示)只包含1行。 我希望从此文件中提取的短语始终以{"name":"headline","link":开头 它始终以}}结尾。

所以问题是,是否有任何方法告诉grep它应该显示所有以{"name":"headline","link":开头的短语,直到它们以下一个}}结束?

curl http://example.org/file.txt | grep ?

顺便说一句:

curl http://example.org/file.txt | grep "\{\"name\"\:\"headline\"\,\"link\"\:\"http\:\/\/"

显示整个文本文件,因为它只是一个内容。

2 个答案:

答案 0 :(得分:1)

使用-o选项。

grep -o '{"name":"headline","link":[^}]*}}'

或者,如果您只想要{"name":"headline","link":}}之间的内容,请使用Sed。

sed -r 's/{"name":"headline","link":([^}]*)}}/\1/g'

但实际上,请使用正确的JSON解析器。

答案 1 :(得分:1)

这样做

grep -o -E '"name":"Rausschmeisser","link":"[^"]+"'

这将为您提供完整的网址列表

egrep -o '"name":"Rausschmeisser","link":"[^"]+' | cut -f8- -d\"
相关问题