Bonjour,

J'ai un petit soucis.
J'essaie d'utiliser sed pour insérer du texte à un endroit précis d'un fichier. Voici mon fichier:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
  "test_data": [
    {
      "id": "1",
      "pm": "30",
      "mp": "40"
    }
  ],
  "test": [
    "id",
    "pm",
    "mp"
  ]
}
J'aimerais insérer du texte après l’accolade de test_data. Le fichier peut contenir plus ou moins d'information. Je suis donc arriver à cette commande qui fonctionne:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
sed "/^[[:blank:]]*\"test_data\": \[$/,/^[[:blank:]]*],*$/ {s/^[[:blank:]]*}$/&test /}" myfile
Qui donne:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
  "test_data": [
    {
      "id": "1",
      "pm": "30",
      "mp": "40"
    }test
  ],
  "test": [
    "id",
    "pm",
    "mp"
  ]
}
Super.
Maintenant au lieu d'ajouter du texte, j'aimerais ajouter le contenu d'un fichier à la place de test. Je suis donc parti sur quelque chose de ce genre là:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
sed "/^[[:blank:]]*\"test_data\": \[$/,/^[[:blank:]]*],*$/ {s/^[[:blank:]]*}$/&$(cat myAnotherFile) /}" myfile
Non fonctionnel. J'ai donc fait des recherches, et je suis tombé sur le /r qui permet d'insérer le contenu d'un fichier.
Mais pour être honnête, je ne sais pas comment insérer ce /r dans ma commande ci-dessus ....

Quelqu'un a une idée ?
Merci d'avance !
Cordialement