Jq, um Text direkt in der Datei zu ersetzen (wie sed -i)

Ich habe eine JSON-Datei, die unter bestimmten Umständen aktualisiert werden muss.

Sample json

{
   "Actions" : [
      {
         "value" : "1",
         "properties" : {
            "name" : "abc",
            "age" : "2",
            "other ": "test1"
          }
      },
      {
         "value" : "2",
         "properties" : {
            "name" : "def",
            "age" : "3",
            "other" : "test2"
          }
      }
   ]
}

Ich schreibe ein Skript, das Jq verwendet, um einen Wert zu ermitteln und zu aktualisieren, wie unten gezeigt.

cat sample.json |  jq '.Actions[] | select (.properties.age == "3") .properties.other = "no-test"'

Ausgabe (auf Terminal gedruckt)

{
  "value": "1",
  "properties": {
    "name": "abc",
    "age": "2",
    "other ": "test1"
  }
}
{
,  "value": "2",
  "properties": {
    "name": "def",
    "age": "3",
    "other": "no-test"
  }
}

Während dieser Befehl die erforderliche Änderung vornimmt, gibt er den gesamten json auf dem Terminal aus und nimmt keine Änderungen an der Datei selbst vor.

Bitte geben Sie an, ob es eine Option gibt, mit der jq Änderungen direkt an der Datei vornehmen kann (ähnlich wie bei sed -i).

Antworten auf die Frage(6)

Ihre Antwort auf die Frage