我想跟踪一个格式类似于
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-
有没有一种方法可以让我寻找那些不以普通日期模式开头的行,而只是让那些行通过未处理的行?
谢谢
最佳答案
你可以用这样的锥子:
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
的特定模式,并仅解析这些行。其余行将按原样打印。