Use sed para substituir alguma string em um arquivo

0

Eu tenho um arquivo com o conteúdo abaixo:

 {
  "applications": [
    {
      "id": 2537302,
      "name": "addressdb_prod",
      "language": "dotnet",
      "health_status": "unknown",
      "reporting": true,
      "last_reported_at": "2017-08-03T10:41:52+00:00",
      "application_summary": {
      "response_time": 5.04,
      more content here....
      and finally the following lines towards the end of the file
     },
      "links": {
        "application_instances": [],
        "servers": [],
        "application_hosts": []
      }
    }
    ],
  "links": {
    "application.servers": "/v2/servers?ids={server_ids}",
    "application.server": "/v2/servers/{server_id}",
    "application.application_hosts": "/v2/application/{application_id}/hosts?ids={host_ids}",
    "application.application_host": "/v2/application/{application_id}/hosts/{host_id}",
    "application.application_instances": "/v2/application/{application_id}/instances?ids={instance_ids}",
    "application.application_instance": "/v2/application/{application_id}/instances/{instance_id}",
    "application.alert_policy": "/v2/alert_policies/{alert_policy_id}"
  }
}

O que eu gostaria é que o comando sed seja executado para remover as partes abaixo:

{
  "applications": [

desde o começo do arquivo, e também qualquer coisa começando das partes abaixo até o final do arquivo.

],
  "links": {
    
por ashabc 04.08.2017 / 06:20

1 resposta

1

Supondo que seu arquivo não contenha nenhuma outra linha que comece com ], , é muito simples definir dois intervalos a serem excluídos:

sed '1,/"applications": \[/d
     /^[[:blank:]]*\],/,$d' yourfile
    
por 04.08.2017 / 07:54