IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Modification de fichier avec sed


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2017
    Messages : 53
    Par défaut Modification de fichier avec sed
    Salut tout le monde,

    Alors voilà j'ai un fichier au format JSON que j'aimerais modifier de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    [
       {
          "coordinates": {
             "timestamp": 1517213297
          }, 
          "identification": {
             "producer": "reseau"
          }, 
          "meta": {
             "name": "test", 
             "tags": "{"id" : "081400"}"
          }, 
          "values": "{ "default" : 2.18 }"
       }, 
       {
          "coordinates": {
             "timestamp": 1517213297
          }, 
          "identification": {
             "producer": "reseau"
          }, 
          "meta": {
             "name": "test", 
             "tags": "{"id" : "073700"}"
          }, 
          "values": "{ "default" : 1.3 }"
       }, 
       {
          "coordinates": {
             "timestamp": 1517213297
          }, 
          "identification": {
             "producer": "reseau"
          }, 
          "meta": {
             "name": "test", 
             "tags": "{"id" : "080800"}"
          }, 
          "values": "{ "default" : 2.9 }"
       }
    ]
    et j'aimerais faire en sorte de supprimer les guillemets qui entoure la partie id et la partie default, en effet, à cause de ces guillemets, le JSON est invalide.

    J'aimerais donc que ça ressemble à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    [
       {
          "coordinates": {
             "timestamp": 1517213297
          }, 
          "identification": {
             "producer": "reseau"
          }, 
          "meta": {
             "name": "test", 
             "tags": {"id" : "081400"}
          }, 
          "values": { "default" : 2.18 }
       }, 
       {
          "coordinates": {
             "timestamp": 1517213297
          }, 
          "identification": {
             "producer": "reseau"
          }, 
          "meta": {
             "name": "test", 
             "tags": {"id" : "073700"}
          }, 
          "values": { "default" : 1.3 }
       }, 
       {
          "coordinates": {
             "timestamp": 1517213297
          }, 
          "identification": {
             "producer": "reseau"
          }, 
          "meta": {
             "name": "test", 
             "tags": {"id" : "080800"}
          }, 
          "values": { "default" : 2.9 }
       }
    ]
    Je n'ai mis qu'une partie du fichier mais il faut imaginer que ça ne se limite pas qu'à cela.

    J'ai fais des recherches au niveau de sed / awk / cut et j'ai tenté quelques commandes, mais rien de très concluants.

    Je ne sais même pas si sed est suffisamment puissant pour faire ce que je demande...

    Bonne journée en espérant avoir des réponses à mon problème

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/"\(id\|default\)"/{ s/"{/{/;s/}"/}/}'
    MAIS, il faut que le format soit bien celui montré : s'il y a d'autres accolades sur la ligne, seul la première sera modifiée. :/
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2017
    Messages : 53
    Par défaut
    Merci de cette réponse très rapide,

    effectivement le fichier que j'ai mis n'est pas tout à fait celui que j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    [
       {
          "coordinates": {
             "timestamp": 1517213297
          }, 
          "identification": {
             "producer": "reseau"
          }, 
          "meta": {
             "name": "test", 
             "tags": "{'id' : '081400'}"
          }, 
          "values": "{ 'default' : 2.18 }"
       }, 
       {
          "coordinates": {
             "timestamp": 1517213297
          }, 
          "identification": {
             "producer": "reseau"
          }, 
          "meta": {
             "name": "test", 
             "tags": "{'id' : '073700'}"
          }, 
          "values": "{ 'default' : 1.3 }"
       }, 
       {
          "coordinates": {
             "timestamp": 1517213297
          }, 
          "identification": {
             "producer": "reseau"
          }, 
          "meta": {
             "name": "test", 
             "tags": "{'id' : '080800'}"
          }, 
          "values": "{ 'default' : 2.9 }"
       }
    ]
    En effet, sur mon post j'ai mis des " au lieu des ' qui sont actuellement dans mon fichier car je ne pensais pas que la commande se ferait en fonction du nombre de " présents.

    Excusez-moi ...

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/'\''\(id\|default\)'\''/{ s/"{/{/;s/}"/}/}'
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2017
    Messages : 53
    Par défaut
    Impressionnant !

    Merci beaucoup !

    Topic résolu.

  6. #6
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2017
    Messages : 53
    Par défaut
    Quitte à avoir un expert de sed, du coup j'aimerais remplacer les ' par des ".

    Voici la commande à laquelle je pensais pour faire cette modification :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sed 's/'/\"/' fichier
    Si tu avais moyen de m'aider juste pour cette commande, après je ne t'embête plus promis !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. modification complexe fichier - awk, sed ?
    Par vpovpo dans le forum Unix
    Réponses: 1
    Dernier message: 19/04/2010, 16h06
  2. modification complexe fichier - awk, sed ?
    Par vpovpo dans le forum Linux
    Réponses: 1
    Dernier message: 19/04/2010, 16h00
  3. Probleme de modification de fichier avec le lecteur wmp
    Par olafviking dans le forum Windows Forms
    Réponses: 0
    Dernier message: 26/01/2010, 23h17
  4. copie contenu d'un fichier dans un autre fichier avec sed
    Par zorooo dans le forum Shell et commandes GNU
    Réponses: 14
    Dernier message: 18/01/2010, 09h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo