Esta resposta é baseada no acima, parecendo muito com o JSON, então eu supus que provavelmente é JSON
. Mas está incompleto na sua amostra, que eu também assumi que é um erro de digitação. Se este não for o caso ... bem, você já tem sed
respostas.
Por favor, não use um regex para analisar JSON
. É desagradável. regex é ruim em tipos de dados com tags recursivas, como JSON
/ XML
. É na melhor das hipóteses um hack sujo que cria código frágil no futuro.
Da mesma forma - JSON
é importante que esteja completo - eu tive que adivinhar como seu JSON
completo parece.
Supondo que JSON
goste disso (use link para arrumar os elementos)
{
"s220823vaps2512": {
"hostname": "s220823vaps2512",
"description": "data",
"type": "Virtual",
"os": "data",
"idc": "data",
"environment": "data",
"deviceclass": "data",
"cores": "data",
"memory": "data",
"frontnet": "data",
"ipset": {
"backnet": "data",
"storagenet": "data",
"metroclusternet": "data"
},
"roles": "data",
"mounts": "data"
},
"s220823vaps2513": {
"hostname": "s220823vaps2513",
"description": "data",
"type": "Virtual",
"os": "data",
"idc": "data",
"environment": "data",
"deviceclass": "data",
"cores": "data",
"memory": "data",
"frontnet": "data",
"ipset": {
"backnet": "data",
"storagenet": "data",
"metroclusternet": "data"
}
}
}
Então o caminho para pegar os bits que você quer:
#!/usr/bin/env perl
use strict;
use warnings;
use JSON;
my $input = ### as above, snipped for brevity.
#decode/validated
my $json = decode_json ( $input );
#create new JSON array of elements.
my $new_json = [map { $json -> {$_} } keys %$json];
#print it out.
print to_json ( $new_json, { pretty => 1, canonical => 1 } );
E, dessa maneira, você cria uma saída JSON válida, além de tratar casos em que, por exemplo, A ordenação de chaves é diferente (o que é totalmente válido em JSON).