Grep читать от определенного символа / слова до определенного символа / слова - PullRequest
1 голос
/ 11 февраля 2012

Я использую 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 ]

1 голос
/ 11 февраля 2012

Это будет делать

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

Это даст вам полный список URL

egrep -o '"name":"Rausschmeisser","link":"[^"]+' | cut -f8- -d\"
1 голос
/ 11 февраля 2012

Используйте опцию -o.

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

В качестве альтернативы, если вы хотите, чтобы содержимое находилось только между {"name":"headline","link": и }}, используйте Sed.

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

Но на самом деле, получите правильный анализатор JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...