ฉันมีไฟล์ข้อความอยู่ด้านล่าง

 {
  "data": {
    "assigned-entity-id": null,
    "assigned-entity-type": null,
    "availability-domain": null,
    "compartment-id": "ocid1.tenancy.oc1..dgfmmnusmgibmkdomuijsngimimfimfgiufmgifmdsfsdsgsmgsifmg",
    "defined-tags": {
      "Oracle-Tags": {
        "CreatedBy": "[email protected]",
        "CreatedOn": "2021-03-20T13:26:04.662Z"
      }
    },
    "display-name": "ABC",
    "freeform-tags": {},
    "id": "ocid1.database.oc1.cd-south-1.amaaaaaago5rdtya6mmvwjfdpdebz7twdxlfdsdssssssaaaaaaadddddd",
    "ip-address": "1.1.1.1",
    "lifecycle-state": "AVAILABLE",
    "lifetime": "XXXXXXX",
    "private-ip-id": null,
    "public-ip-pool-id": null,
    "scope": "REGION",
    "time-created": "2021-03-20T13:26:04.748000+00:00"
  },
  "etag": "cdsssss"
}
{
  "data": {
    "assigned-entity-id": null,
    "assigned-entity-type": null,
    "availability-domain": null,
    "compartment-id": "ocid1.tenancy.oc1..dgfmmnusmgibmkdomuijsngimimfimfgiufmgifmdsfsdsgsmgsifmg",
    "defined-tags": {
      "Oracle-Tags": {
        "CreatedBy": "[email protected]",
        "CreatedOn": "2021-03-20T13:26:09.523Z"
      }
    },
    "display-name": "ASD",
    "freeform-tags": {},
    "id": "ocid1.database.oc1.cd-south-1.amaaaaaago5rdtya6mmvwjfdpdezzzzzzzzzzzzzzzzzzzddddddddddddddd",
    "ip-address": "2.2.2.2",
    "lifecycle-state": "AVAILABLE",
    "lifetime": "XXXXXXX",
    "private-ip-id": null,
    "public-ip-pool-id": null,
    "scope": "REGION",
    "time-created": "2021-03-20T13:26:09.583000+00:00"
  },
  "etag": "dfreeeee"
}

ฉันต้องการผลลัพธ์เป็น ocid1.database.oc1.cd-south-1.amaaaaaago5rdtya6mmvwjfdpdebz7twdxlfdsdssssssaaaaaaadddddd ocid1.database.oc1.cd-south-1.amaaaaaago5rdtya6mmvzzzzjfddzzddzzddzz

ฉันลองค้นหาใน google แล้ว แต่ไม่พบตัวเลือกเฉพาะใดๆ

ใครสามารถแนะนำคำสั่ง grep, awk หรือ usnix ใด ๆ เพื่อรับเอาต์พุต

answer

คำตอบที่ตรงไปตรงมาที่สุดคืออย่าพยายามใช้ grep, sed, awk และอื่น ๆ สำหรับสิ่งนี้ แม้ว่าพวกเขาจะทำเช่นนั้น คุณจะต้องลงเอยด้วยการตั้งสมมติฐานและต้องสับเปลี่ยนโค้ดอย่างต่อเนื่อง

คุณสามารถทำมันด้วยตัวโมดูล JSON ในหลามหรือเป้าหมายที่จะสร้างเครื่องมือ CLI เช่นJQ

ตัวอย่าง jq:

% cat ids.txt | jq '.data.id'
"ocid1.database.oc1.cd-south-1.amaaaaaago5rdtya6mmvwjfdpdebz7twdxlfdsdssssssaaaaaaadddddd"
"ocid1.database.oc1.cd-south-1.amaaaaaago5rdtya6mmvwjfdpdezzzzzzzzzzzzzzzzzzzddddddddddddddd"

ตัวอย่างหลาม:

% cat ids.txt | python3 -c "import sys, json; print(json.load(sys.stdin)['data']['id'])"
ocid1.database.oc1.cd-south-1.amaaaaaago5rdtya6mmvwjfdpdebz7twdxlfdsdssssssaaaaaaadddddd
ocid1.database.oc1.cd-south-1.amaaaaaago5rdtya6mmvwjfdpdezzzzzzzzzzzzzzzzzzzddddddddddddddd