Je suis confondu avec une partie simple apparente de sed - the ou instruction. J'ai écrit ce qui suit sed qui analyse un fichier d'événements avec de multiples événements encapsulées entre les balises d'événement et puis imprime la sortie de chaque événement sur 1 ligne:Utilisation ou en remplacement multiligne sed
machinename:~$ sed -n "/<event/,/<\/event>/ {/<result/{s/.*result value=\" \(.*\)\"\/>.*/\1/g; p}; /<sender/ {s/.*phoneNo=\"\(.*\)\" country.*/\1/g; p}}" xmlEventLog_2010-02-05T16:40:55.xml | sed '/Allowed/{N;s/\n/ /;}'
Allowed +989350000100
Allowed +989350000209
Allowed +989350000002
Allowed +989350000002
Allowed +989350000100
Allowed +989350000209
Allowed +989350000002
Allowed +989350000002
machinename:~$
De ce qui précède, il y a 8 événements dans le journal tous avec le résultat Permis. Maintenant, le problème est qu'il pourrait y avoir plus d'une valeur de résultat. Les valeurs de résultat peuvent être bloquées modifiées ou autorisées. Je pensais que (Bloqué | modification | autorisés) dans la deuxième sed traiterait cela, mais je suis la sortie suivante:
machinename:~$ sed -n "/<event/,/<\/event>/{/<result/{s/.*result value=\"\(.*\)\"\/>.*/\1/g; p}; /<sender/ {s/.*phoneNo=\"\(.*\)\" country.*/\1/g; p}}" xmlEventLog_2010-02-05T16:40:55.xml | sed '/(Allowed|Blocked|Modified)/{N;s/\n/ /;}'
Allowed
+989350000100
Allowed
+989350000209
Allowed
+989350000002
Allowed
+989350000002
Allowed
+989350000100
Allowed
+989350000209
Allowed
+989350000002
Allowed
+989350000002
machinename:~$
Alors qu'est-ce que je manque? pourquoi le ou dans la finale sed arrêter le remplacement de la nouvelle ligne?
Merci à l'avance
A
merci. parfois une autre paire d'yeux peut voir l'évidence – amadain