Commande d’Oozie utilisée
oozie jobs -oozie http://localhost:11000/oozie -localtime | grep "2013-05-08" > Input.txt
Journal Oozie (Input.txt)
61-oozie DProSUCCEEDED chronicles users 2013-05-08 04:47 2013-05-08 04:53 61-oozie DPRUNNING chronicles users 2013-05-08 04:47 61-oozie DProcessSuspended chronicles users 2013-05-08 04:42 2013-05-08 04:48 61-oozie DKILLED chronicles users 2013-05-08 04:07 2013-05-08 04:09
Je veux une colonne supplémentaire comme “Statut” qui stockera le message d’état comme “SUCCESS / RUNNING / KILLED / SUSPENDED / Prep”.
Nous aurons les messages ” Status ” de la 2ème colonne sous la forme .
Je ne suis pas capable de deviner le délimiteur du texte ci-dessus. Nous pouvons donc utiliser les concepts AWK / cut / subssortingng.
Status messages are static . Job names are dynamic.
Il y aura 4 messages d’état .
Sortie désirée
61-oozie DPro chronicles users 2013-05-08 04:47 2013-05-08 04:53 SUCCEEDED 61-oozie DP chronicles users 2013-05-08 04:47 - RUNNING 61-oozie DProcess chronicles users 2013-05-08 04:42 2013-05-08 04:48 Suspended 61-oozie D chronicles users 2013-05-08 04:07 2013-05-08 04:09 KILLED
Extrait le statut désiré et le met à la fin de la ligne,
perl -pe 's/\B(succeeded|running|suspended|killed|prep)//i and $w=$1 and s/$/ $w/' file
sed 's/(\w+)(SUCCEEDED|RUNNING|Prep|KILLED|SUSPENDED)(\s+.+)$/\1\3 \2/g'
pré-statut, statut, post-statut -> pré-statut, post-statut, statut
Étant donné que vous semblez avoir une différence entre le statut sur l’entrée et le résultat souhaité, par exemple, “ProcessSuspended” et “SUSPENDED”, vous pouvez également échanger ceux-ci:
sed 's/(\w+)(SUCCEEDED|RUNNING|Prep|KILLED|SUSPENDED)(\s+.+)$/\1\3 \2/g' | sed 's/ProcessSuspended$/SUSPENDED/g'
Ou utilisez Perl et faites une recherche.