Construction fichier à partir d'un autre via la commande SED [Résolu]

-
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
Afficher la suite 

1 réponse

Messages postés
36759
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
19 août 2019
3866
0
Merci
Salut,
j'essaie la commande "sed" mais je n'y arrive pas
C'est à dire ? Qu'as-tu essayé de faire ?

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
zipe31
Messages postés
36759
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
19 août 2019
3866 > 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
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
zipe31
Messages postés
36759
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
19 août 2019
3866 > Altonero -
Il suffit de rajouter "\b" devant et derrrière "VERSION" :
sed -n '/\bVERSION\b\…
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 !
Commenter la réponse de zipe31