sedを使用してファイル内の特定の文字列を置き換える

sedを使用してファイル内の特定の文字列を置き換える

次の内容を含むファイルがあります。

 {
  "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}"
  }
}

私が望むのは、sedコマンドを実行して次の部分を削除することです。

{
  "applications": [

ファイルの先頭から次のセクションからファイルの最後まで。

],
  "links": {

ベストアンサー1

ファイルに次に始まる他の行がないと仮定すると、],削除する2つの範囲を定義することは非常に簡単です。

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

おすすめ記事