Regex 如何使用SED或AWK追加行,直到特定模式不匹配为止?

Regex 如何使用SED或AWK追加行,直到特定模式不匹配为止?,regex,bash,awk,sed,Regex,Bash,Awk,Sed,我想附加不以给定模式开头的行。但我无法使用sed实现这一点。请帮助我使用sed或awk解决问题。例如: 输入: 18:55:42[pool-1-thread-2] INFO jfileupload.download.http.a - Download completed 18:55:42[HTTPDOWNLOAD] ERROR jfileupload.download.ui.DownloadTransferUI - java.io.IOException: Failed to show URI

我想附加不以给定模式开头的行。但我无法使用
sed
实现这一点。请帮助我使用
sed
awk
解决问题。例如:

输入:

18:55:42[pool-1-thread-2] INFO jfileupload.download.http.a - Download completed
18:55:42[HTTPDOWNLOAD] ERROR jfileupload.download.ui.DownloadTransferUI - 
java.io.IOException: Failed to show URI:file:/home/rahul/Desktop/
    at sun.awt.X11.XDesktopPeer.launch(XDesktopPeer.java:114)
    at sun.awt.X11.XDesktopPeer.open(XDesktopPeer.java:77)
    at java.awt.Desktop.open(Desktop.java:272)
    at jfileupload.download.ui.DownloadTransferUI.a(Unknown Source)
    at jfileupload.download.http.HTTPDownloadTransfer.a(Unknown Source)
    at jfileupload.download.a.a.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:745)
18:55:43[MultiThreadedHttpConnectionManager cleanup] DEBUG org.apache.commons.httpclient.MultiThreadedHttpConnectionManager - ReferenceQueueThread interrupted
java.lang.InterruptedException
    at java.lang.Object.wait(Native Method)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
    at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$ReferenceQueueThread.run(MultiThreadedHttpConnectionManager.java:1122)
18:55:42[pool-1-thread-2] INFO jfileupload.download.http.a - Download completed
18:55:42[HTTPDOWNLOAD] ERROR jfileupload.download.ui.DownloadTransferUI -java.io.IOException: Failed to show URI:file:/home/rahul/Desktop/, at sun.awt.X11.XDesktopPeer.launch(XDesktopPeer.java:114),  at sun.awt.X11.XDesktopPeer.open(XDesktopPeer.java:77), at java.awt.Desktop.open,(Desktop.java:272),    at jfileupload.download.ui.DownloadTransferUI.a(Unknown Source),    at jfileupload.download.http.HTTPDownloadTransfer.a(Unknown Source),    at jfileupload.download.a.a.run(Unknown Source),    at java.lang.Thread.run(Thread.java:745)
18:55:43[MultiThreadedHttpConnectionManager cleanup] DEBUG org.apache.commons.httpclient.MultiThreadedHttpConnectionManager - ReferenceQueueThread interrupted,java.lang.InterruptedException,  at java.lang.Object.wait(Native Method),    at java.lang.ref.ReferenceQueue.remove,(ReferenceQueue.java:135),   at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151),    at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$ReferenceQueueThread.run(MultiThreadedHttpConnectionManager.java:1122)
所需输出:

18:55:42[pool-1-thread-2] INFO jfileupload.download.http.a - Download completed
18:55:42[HTTPDOWNLOAD] ERROR jfileupload.download.ui.DownloadTransferUI - 
java.io.IOException: Failed to show URI:file:/home/rahul/Desktop/
    at sun.awt.X11.XDesktopPeer.launch(XDesktopPeer.java:114)
    at sun.awt.X11.XDesktopPeer.open(XDesktopPeer.java:77)
    at java.awt.Desktop.open(Desktop.java:272)
    at jfileupload.download.ui.DownloadTransferUI.a(Unknown Source)
    at jfileupload.download.http.HTTPDownloadTransfer.a(Unknown Source)
    at jfileupload.download.a.a.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:745)
18:55:43[MultiThreadedHttpConnectionManager cleanup] DEBUG org.apache.commons.httpclient.MultiThreadedHttpConnectionManager - ReferenceQueueThread interrupted
java.lang.InterruptedException
    at java.lang.Object.wait(Native Method)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
    at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$ReferenceQueueThread.run(MultiThreadedHttpConnectionManager.java:1122)
18:55:42[pool-1-thread-2] INFO jfileupload.download.http.a - Download completed
18:55:42[HTTPDOWNLOAD] ERROR jfileupload.download.ui.DownloadTransferUI -java.io.IOException: Failed to show URI:file:/home/rahul/Desktop/, at sun.awt.X11.XDesktopPeer.launch(XDesktopPeer.java:114),  at sun.awt.X11.XDesktopPeer.open(XDesktopPeer.java:77), at java.awt.Desktop.open,(Desktop.java:272),    at jfileupload.download.ui.DownloadTransferUI.a(Unknown Source),    at jfileupload.download.http.HTTPDownloadTransfer.a(Unknown Source),    at jfileupload.download.a.a.run(Unknown Source),    at java.lang.Thread.run(Thread.java:745)
18:55:43[MultiThreadedHttpConnectionManager cleanup] DEBUG org.apache.commons.httpclient.MultiThreadedHttpConnectionManager - ReferenceQueueThread interrupted,java.lang.InterruptedException,  at java.lang.Object.wait(Native Method),    at java.lang.ref.ReferenceQueue.remove,(ReferenceQueue.java:135),   at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151),    at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$ReferenceQueueThread.run(MultiThreadedHttpConnectionManager.java:1122)
在上面的输入中,我想用
将下一行附加到当前行,直到新行以这样的模式开始
18:55:42


谢谢。

没有试过,但应该可以

awk '/[0-9]+:[0-9]+:[0-9]+/{x=$0}{a[x]=a[x]?a[x]", "$0:$0}END{for (i in a)print a[i]}' file


你能解释一下上面的工作原理吗。这对我们大家都很有用。谢谢,它起作用了。