次のログファイルがあります。
/export/home/got/logs/o2877612.01:job_1432787863184_159408 Message: org.apache.pig.backend.executionengine.ExecException: ERROR 2118: Input path does not exist: /user/got/distro
/export/home/got/logs/o2877612.01:Module: SUMMARY_PIG
次の2行を組み合わせて最終ログファイルを構成したいと思います。上記の2行はすべて次から始まります/export/home/got/logs/o2877612.01
。
/export/home/got/logs/o2877612.01:Module: SUMMARY_PIG :job_1432787863184_159408 Message: org.apache.pig.backend.executionengine.ExecException: ERROR 2118: Input path does not exist: /user/got/distro
Unixコマンドを助けることができますか?
ベストアンサー1
そしてawk
:
awk -F: '{if($1!=a){printf "\n%s", $0}else{$1=":";print}} {a=$1}' file
どこ:
-F:
区切り文字として使用されます:
。if($1!=a){...}
変数に最初のフィールドと同じ内容が含まれている場合は、最後に改行なしですべての内容を印刷します。else{...}
: それ以外の場合は、最初のフィールドを除くすべてのフィールドを印刷します。{a=$1}
if句で使用される変数を設定します。
出力:
/export/home/got/logs/o2877612.01:job_1432787863184_159408 Message: org.apache.pig.backend.executionengine.ExecException: ERROR 2118: Input path does not exist: /user/got/distro: Module SUMMARY_PIG
私の考えでは、出力が望む順序で反転されるのではなく、ログファイルに表示される順序で行を表示したいと思います。