Я перепутан с кажущейся простой частью 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) во втором 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|Blocked|Modified)/{N;s/\n/ /;}'
Allowed
+989350000100
Allowed
+989350000209
Allowed
+989350000002
Allowed
+989350000002
Allowed
+989350000100
Allowed
+989350000209
Allowed
+989350000002
Allowed
+989350000002
machinename:~$
Таким образом, что я пропускаю? почему делает, или в финале sed останавливают замену новой строки?
Заранее спасибо
A
Вы хотите написать
sed '/ \ (Allowed \ | Blocked \ | Modified \) / {N; s / \ n / /;}'
:)