我很困惑sed的一個看似簡單的部分 - 或聲明。我寫下面的sed,它解析與事件代碼之間封裝多個事件的事件文件,然後打印在每1行的每個事件的輸出:使用或在多行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:~$
從上面的有8個事件日誌中的所有使用結果在允許。現在麻煩是可能有多個結果值。結果值可能是「阻止修改」或「允許」。我認爲在第二個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會停止換行呢?
在此先感謝
一個
謝謝。有時候另一雙眼睛可以看到明顯的 – amadain 2010-05-13 11:07:24