Construction fichier à partir d'un autre via la commande SED

Résolu
Altonero -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je voudrais construire un fichier à partir d'un autre fichier j'essaie la commande "sed" mais je n'y arrive pas.

Merci pour votre aide.

Fichier input.txt :

          "_class" : "hudson.triggers.TimerTrigger$TimerTriggerCause",
"shortDescription" : "Lancé par une alarme périodique"
}
]
},
{
"_class" : "hudson.model.ParametersAction",
"parameters" : [
{
"_class" : "hudson.model.StringParameterValue",
"name" : "VERSION",
"value" : "5.3.0.4"
},
{
"_class" : "hudson.model.StringParameterValue",
"name" : "DISTRIB",
"value" : "pfa"
},
{
"_class" : "hudson.model.StringParameterValue",
"name" : "APPLI_BRANCH",
"value" : "br_mnt_3.5.11"
},
{
"_class" : "hudson.model.StringParameterValue",
"name" : "INFRA_BRANCH",
"value" : "hotfix/4.4.2"
},
{
"_class" : "hudson.model.StringParameterValue",
"name" : "CONFIG_BRANCH",
"value" : "hotfix/4.4.2"
},
{
"_class" : "hudson.model.BooleanParameterValue",
"name" : "SKIP_INFRA",
"value" : false
},
{


fichier output.txt

VERSION  :  5.3.0.4
APPLI_BRANCH : br_mnt_3.5.11
INFRA_BRANCH : hotfix/4.4.2"
CONFIG_BRANCH : hotfix/4.4.2"


Configuration: Windows / Firefox 60.0

1 réponse

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,
    j'essaie la commande "sed" mais je n'y arrive pas
    C'est à dire ? Qu'as-tu essayé de faire ?

    0
    1. Altonero
       
      j'ai essayé

      sed -n 's/.*"VERSION":\([\"A-Za-z][0-9]*\),.*/\1/p'

      mais ça n'a pas l'air d'être bon.

      Merci pour ton aide
      0
      1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501 > Altonero
         
        SED est un éditeur de flux, et par conséquent il ne lit et ne traite qu'une ligne à la fois, sauf si on stipule une plage d'adresses ou, et c'est ton cas, si on lui dit de lire et de charger la ligne suivante (commande "N") dans son buffer principal.

        sed -n '/VERSION\|\(APPLI\|INFRA\|CONFIG\)_BRANCH/{N;s/.*: "//Mg;s/[,"]//g;s/\n/ : /p}' fichier
        VERSION : 5.3.0.4
        APPLI_BRANCH : br_mnt_3.5.11
        INFRA_BRANCH : hotfix/4.4.2
        CONFIG_BRANCH : hotfix/4.4.2
        0
    2. Altonero
       
      Merci zipe31,
      Puis-je filtrer que sur les chaînes suivantes puisque dans le fichier input il y a d'autres lignes avec VERSION
      exemple :
      { "_class" : "hudson.model.StringParameterValue",
      "name" : "FORCE_VERSION",
      "value" : "" }



      $ sed -n '/VERSION\|\(APPLI\|\|CONFIG\)_BRANCH/{N;s/.*: "//Mg;s/[,"]//g;s/\n/ : /p}' output.txt
      VERSION : 5.3.0.4
      APPLI_BRANCH : br_mnt_3.5.11
      INFRA_BRANCH : hotfix/4.4.2
      CONFIG_BRANCH : hotfix/4.4.2
      FORCE_VERSION :
      REMOVE_EXISTING_VERSION : value : true
      VERSION_PFA : 1.6.1


      sortie voulu :

      VERSION : 5.3.0.4
      APPLI_BRANCH : br_mnt_3.5.11
      INFRA_BRANCH : hotfix/4.4.2
      CONFIG_BRANCH : hotfix/4.4.2
      0
      1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501 > Altonero
         
        Il suffit de rajouter "\b" devant et derrrière "VERSION" :
        sed -n '/\bVERSION\b\…
        0
    3. Altonero
       
      c'est bon j'ai réussi

      sed -n '/"VERSION"\|\(APPLI\|\|CONFIG\)_BRANCH/{N;s/.*: "//Mg;s/[,"]//g;s/\n/ : /p}' output.txt

      merci pour ton aide !
      0