Analisar json com apenas sed é tão problemático quanto analisar HTML - em suma: como elementos podem incorporar outros elementos e regex não suporta recursão, é essencialmente impossível analisar corretamente com apenas regexp.
Há uma solução PCRE para analisar e validar o json aqui: link - eu não usei ou testei, então vou ter que usar a palavra do autor que funciona ... mas o PCRE faz muitas coisas que simplesmente não estão no regexps básico ou estendido suportado pelo sed.
Em qualquer caso, é melhor você usar o perl, o python ou o awk e uma das bibliotecas de análise json para essas linguagens, ou uma ferramenta de análise json especializada - várias são mencionadas aqui:
link
Qualquer um deles pode ser usado para extrair dados da entrada JSON para uso em um script de shell. Ou você pode escrever todo o seu programa dentro desse idioma.
Por exemplo, canalizar seus dados do json para python -mjson.tool resulta nisto:
$ echo "JSONDATAHERE" | python -m json.tool
{
"content_url": "http://files.eeehousenyc.com/1I3Q0Z1E2F3C/CastingBy-v12%20mixed.mov",
"created_at": "2012-08-27T20:04:27Z",
"deleted_at": null,
"download_url": "http://files.eeehousenyc.com/1I3Q0F3C/download/CastingBy-v12%20mixed.mov",
"gauge_id": null,
"href": "http://my.cl.ly/items/2840",
"icon": "http://my.cld.me/images/item-types/video.png",
"id": 21462840,
"item_type": "video",
"name": "CastingBy-v12 mixed.mov",
"private": true,
"redirect_url": null,
"remote_url": "http://f.cl.ly/items/3D0P02b3e3p2I/CastingBy-v12%20mixed.mov",
"source": "Cloud/1.5.4 CFNetwork/520.4.3 Darwin/11.4.0 (x86_64) (MacPro5%2C1)",
"subscribed": true,
"updated_at": "2012-08-27T20:13:38Z",
"url": "http://files.housenyc.com/1I3E2F3C",
"view_counter": 2
}
que você pode então canalizar para o sed assim:
$ echo "JSONDATAHERE" | python -m json.tool | sed -n -e '/"name":/ s/^.*"\(.*\)".*//p'
CastingBy-v12 mixed.mov
Confiando na natureza gananciosa do regexp, o script sed extrai tudo entre o segundo e último caractere "
e o último caractere "
em qualquer linha contendo "name":
.