Я запутался с кажущейся простой частью sed - или оператором. Я написал следующий sed, который анализирует файл событий с несколькими событиями, инкапсулированными между тегами событий, и затем выводит вывод каждого события в 1 строку:
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:~$
Исходя из вышеизложенного, в журнале 8 событий, все с разрешенным результатом. Теперь проблема в том, что может быть более одного значения результата. Значения результата могут быть заблокированы, изменены или разрешены. Я думал, что (Blocked | Modified | Allowed) во втором седе справится с этим, но я получил следующий вывод:
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:~$
Так чего мне не хватает? почему или в последнем седе останавливает замену новой строки?
Заранее спасибо
A