Ich habe eine Datei wie diese:
< Dec 2, 2015 2:51:49 PM EST> <Error> <HTTP> <cphypprod1v..com>
<AnalyticProviderServices0> <[ACTIVE] ExecuteThread: '3' for queue:
'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel> <> <1449085909249> <BEA-
101017> <[ServletContext@462961596[app:bea_wls_deployment_internal
module:bea_wls_deployment_internal.war path:/bea_wls_deployment_internal spec-
version:null]] Root ServletException.
java.lang.OutOfMemoryError: GC overhead limit exceeded
>
< Dec 2, 2015 2:51:49 PM EST> <Warning> <RMI> <cphypprod1v.sherwin.com> <AnalyticProviderServices0> <[STANDBY] ExecuteThread: '8' for queue: 'weblogic.kernel.Default (self-tuning)'>
<<WLS Kernel>> <> <> <1449085909264> < BEA-080003> < RuntimeException thrown by
rmi server: javax.management.remote.rmi.RMIConnectionImpl.invoke
(Ljavax.management.ObjectName;Ljava.lang.String;Ljava.rmi.Marshal
>
Ich muss es ändern, damit es so aussieht:
< Dec 2, 2015 2:51:49 PM EST> <Error> <HTTP> <cphypprod1v..com> <AnalyticProviderServices0> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel> <><1449085909249> <BEA-101017> <[ServletContext@462961596[app:bea_wls_deployment_internal module:bea_wls_deployment_internal.war path:/bea_wls_deployment_internal spec-version:null]] Root ServletException. java.lang.OutOfMemoryError: GC overhead limit exceeded >
< Dec 2, 2015 2:51:49 PM EST> <Warning> <RMI> <cphypprod1v.sherwin.com> <AnalyticProviderServices0> <[STANDBY] ExecuteThread: '8' for queue: 'weblogic.kernel.Default (self-tuning)'>
<<WLS Kernel>> <> <> < 1449085909264> < BEA-080003> < RuntimeException thrown by rmi server: javax.management.remote.rmi.RMIConnectionImpl.invoke (Ljavax.management.ObjectName;Ljava.lang.String;Ljava.rmi.Marshal >
Alles zwischen <
und >
muss auf der gleichen Linie sein. Wie kann ich das machen?
text-processing
Naresh
quelle
quelle
<br>
eigentlich Teil Ihrer Datei?Antworten:
Mit
awk
Wenn Sie eine leere Zeile zwischen den einzelnen Ausgaben wünschen, können Sie
\n
demORS
dh eine zusätzliche Zeile hinzufügen(obwohl dies auch eine nachgestellte Leerzeile am Ende der Datei hinzufügen kann).
quelle
sed
Antwort nicht unter der zusätzlichen nachgestellten Newline leidetHier sind Sie ja:
Für (GNU sed) :
Für (BSD sed) :
So habe ich es gemacht:
:x
N
x
am ersten des Befehls -,$!bx
damit die mit dem Leerzeichen verbundene Ersetzung nicht in der letzten Zeile angewendet wird, da die letzte neue Zeile beibehalten werden soll) im Musterbereich
<
eine andere Ersetzung jedes gefolgt von einem Leerzeichen durch eine neue Zeile gefolgt von einem<
.quelle
<
endgültige Ausdruck meiner Meinung nach UNescaped sein, dh's/ </\'$'\n</g'
oder nur's/ </\n</g'
(sonst wird er eher als Wortgrenze als als wörtlich behandelt<
)Sieht aus wie in der Tat, wollen Sie alle Zeilenumbrüche mit Ausnahme derjenigen entfernen , die eine folgen
>
, so:würdest du.
(?<!...)
ist ein negativer Blick hinter Betreiber. Es wird also\n
vorausgesetzt, dass kein a vorangestellt ist>
.Wenn alle Zeilenumbruchzeichen entfernt werden sollen, die sich zwischen übereinstimmenden
<...>
Paaren befinden, und gemäß Ihrem neuen Beispiel diese möglicherweise verschachtelt sind, wird dies komplizierter:Hier wird die Rekursion in Perl-Regexps verwendet (
(?0)
bezieht sich wieder auf den gesamten Regexp).quelle
Unter Verwendung
awk
,paste
undsed
quelle