Linux

Sed - 僅提取具有某些時間戳的文件的一部分

  • August 2, 2015

我每天都使用日誌文件。我一直在使用 sed 來完成我在時間戳之間提取某些數據行的目標。例如,我使用:

sed '/20150720 15:06:00/,/20150720 16:25:00/! d' logfile.log > /tmp/logpart.log

但是,這僅在時間戳實際匹配文件中的一行時才有效。如何強制 sed 處理我想要的數據,而不必進入文件來獲取實際時間戳?例如,在上面的範例中,我只想要 15:00 到 16:30 之間的所有內容,而不管文件中是否有匹配的時間戳。

由於您的日誌文件具有按字典順序排序的時間戳的好習慣,因此您可以使用 awk 簡單地比較字元串,例如:

awk 'substr($0,1,17)>="20150720 15:06:00" && substr($0,1,17)<="20150720 16:25:00"' <logfile.log

我在這裡假設您的時間戳從第 1 列開始(從 1 開始編號)。如果不是,請,1,適當更改。

引用自:https://serverfault.com/questions/710309