
次のファイルがあります。
< 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
>
次のように修正する必要があります。
< 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 >
<
との間のすべての内容は>
同じ行になければなりません。どうすればいいですか?
答え1
そしてawk
awk 'BEGIN{RS=">\n+";ORS=">\n";FS="\n"} {$1=$1}1' yourfile
< Jan 20, 2016 11:58:09 AM EST Test1 Sample Test1 >
< Jan 20, 2016 11:58:09 AM EST Sample Test It is not T1 T2 >
各出力間に空白行が必要な場合は、空白行を追加できます\n
。ORS
awk 'BEGIN{RS=">\n+";ORS=">\n\n";FS="\n"} {$1=$1}1' yourfile
(これにより、ファイルの末尾に空白行が追加される可能性があります。)
答え2
あなたのため:
(GNU sed)について:
sed -e ':x' -e 'N' -e '$!bx' -e 's/\n/ /g' -e 's/ </\n</g' yourFile
(BSD sed)の場合:
sed -e ':x' -e 'N' -e '$!bx' -e 's/\n/ /g' -e 's/ \</\'$'\n</g' yourFile
これが私がする方法です:
- タグを生成して
:x
- パターン空間への線の接続
N
- 生成されたタグ(
x
コマンドの最初のタグ)に分岐するため、最後の$!bx
改行を維持する必要があるため、最後の行にスペース関連の置換を適用しません。 - その後、置換は
パターンスペースの各改行文字をスペース()に置き換えます。
<
その後、別の置換は、すべての後ろにスペースを改行文字に置き換えます<
。
答え3
実際には、以下を除いてすべての改行文字を削除したいようです>
。
perl -pe 's/(?<!>)\n//'
します。(?<!...)
オペレーターの後ろ姿が否定的な姿です。したがって\n
が先行しないというのが前提である>
。
<...>
一致するペア間のすべての改行を削除したい場合そして、新しい例に従って入れ子にすることができ、より複雑になる可能性があります。
perl -0777 -pe 's{<(?:(?0)|[^<>])*>}{$& =~ s/\n//gr}gse'
これはPerl正規表現で再帰を使用します((?0)
再び完全正規表現を参照)。
答え4
使用してawk
、paste
sed
awk '/</{a=1}/>/{print;a=0}a' file | paste -d "" -s | sed 's/></>\n</g'