Использование или в многострочном замене sed - PullRequest
1 голос
/ 13 мая 2010

Я запутался с кажущейся простой частью 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

Ответы [ 2 ]

2 голосов
/ 13 мая 2010

Вы хотите написать

sed '/\(Allowed\|Blocked\|Modified\)/{N;s/\n/ /;}'

:)

0 голосов
/ 12 марта 2013

На всякий случай мой многострочный поиск sed на этот раз успешно остановился на http://www.grymoire.com/Unix/Sed.html. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...