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

Signaler
-
Messages postés
35015
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
5 juillet 2020
-
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

Messages postés
35015
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
5 juillet 2020
5 251
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
Messages postés
35015
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
5 juillet 2020
5 251 > 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
Messages postés
35015
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
5 juillet 2020
5 251 > 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 !