我有一个日志文件如下:
/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
我想通过组合如下两行来形成最终的日志文件。上面两行都以/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){...}
如果 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
我认为您希望按照日志文件中出现的顺序排列行,而不是按照您想要的输出中的顺序颠倒。