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

Résolu/Fermé
Altonero - Modifié le 16 juil. 2019 à 12:19
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 16 juil. 2019 à 14:23
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
A voir également:

1 réponse

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
16 juil. 2019 à 12:17
Salut,
j'essaie la commande "sed" mais je n'y arrive pas
C'est à dire ? Qu'as-tu essayé de faire ?

0
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > Altonero
16 juil. 2019 à 13:33
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
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > Altonero
16 juil. 2019 à 14:23
Il suffit de rajouter "\b" devant et derrrière "VERSION" :
sed -n '/\bVERSION\b\…
0
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