Extrai a parte do valor do par de valores-chave separado por dois-pontos no Linux

0

Eu preciso buscar arn:aws:sns:us-west-2:596873354795:demo do conteúdo abaixo em um arquivo usando o comando sed . Qual seria o comando?

Arquivo de amostra:

{
    "TopicArn": "arn:aws:sns:us-west-2:596873354795:demo"
}
    
por khan888 22.07.2016 / 09:39

2 respostas

5

Seu arquivo de amostra está no formato estruturado chamado JSON . sed não é uma ferramenta conveniente para lidar com esse tipo de arquivo. Em vez disso, instale um analisador para o formato JSON, por exemplo, jq .

Para instalar no Linux da família Debian:

sudo apt-get install jq

Para instalar no Linux da família Red Hat:

sudo yum install jq

Para outras distribuições e plataformas, verifique esta página .

Em seguida, execute:

cat sample_file | jq -r '.["TopicArn"]'

para obter:

arn:aws:sns:us-west-2:596873354795:demo

Verifique os exemplos no manual jq para recuperar arquivos mais complexos.

    
por 22.07.2016 / 10:07
0

Se você estiver confortável com ferramentas orientadas a linha como sed, grep, awk etc E você só deseja fazer extrações simples de pares de chave / valor, você provavelmente encontrará jsonpipe mais fácil de trabalhar do que jq .

Por padrão, as chaves são impressas como um caminho / -delimited, separadas dos valores por uma guia.

por exemplo,

$ json='{"TopicArn": "arn:aws:sns:us-west-2:596873354795:demo"}'

$ echo "$json" | jsonpipe 
/   {}
/TopicArn   "arn:aws:sns:us-west-2:596873354795:demo"

$ echo "$json" | jsonpipe | awk -F'\t' '$1 == "/TopicArn" {print $2}'
"arn:aws:sns:us-west-2:596873354795:demo"

Detalhes do pacote debian dele:

Package: python-jsonpipe

Description-en: Convert JSON to a UNIX-friendly line-based format

jsonpipe traverses a JSON object and produces a simple, line-based textual format which can be processed by all your UNIX favourites like grep, sed, awk, cut and diff. It may also be valuable within programming languages---in fact, it was originally conceived as a way of writing simple test assertions against JSON output without coupling the tests too closely to the specific structure used.

Homepage: http://pypi.python.org/pypi/jsonpipe

    
por 23.07.2016 / 16:59