我想拖尾一个格式类似于
的日志文件Mar 22 23:26:18.793031 localhost my_process[1123]: (my_id) contents of actual log output
Mar 22 23:26:18.946769 localhost my_process[1123]: (my_id) more singe line contents
Mar 22 23:26:18.955423 localhost my_process[1123]: (my_id)
****
* this log statement has a bunch of lines
****
我想从这些线上切掉很多垃圾,这样他们就不会那么久了。但是,我只想剪切以日期等开头的行,同时留下其他行。它应该看起来像:
23:26:18 my_process[1123]: contents of actual log output
23:26:18 my_process[1123]: more singe line contents
23:26:18 my_process[1123]:
****
* this log statement has a bunch of lines
****
这是我要进行的管道,但它正在切断所有线路。
# first cut out the unwanted fields
# then cut out the unwanted decimal part of the timestamp
tail -f mylog.txt | cut -d " " -f 3,5,7- | cut -c 1-8,16-
有没有办法可以查找那些不以该常用日期模式开头的行,只是让这些行通过未经处理的行?
由于
答案 0 :(得分:1)
您可以像这样使用awk:
awk '/ [0-9]{2}:[0-9]{2}:[0-9]{2}/{
split($0, a, /: \([^)]+\) /)
sub(/\.[0-9]+/, "", $3)
print $3, $5, a[2]
next
} 1' file.log
23:26:18 my_process[1123]: contents of actual log output
23:26:18 my_process[1123]: more singe line contents
23:26:18 my_process[1123]:
****
* this log statement has a bunch of lines
****
/ [0-9]{2}:[0-9]{2}:[0-9]{2}/
将在输入行中搜索具有hh:mm:ss
的特定模式,并仅解析这些行。其余的行将按原样打印。