我需要一個腳本來與文件工作,並總結了從SLA探頭故障總結時間。該文件我已經是以下幾點:從日誌文件
Jan 28 22:10:02 test-195869-st28 Jan 28 22:10:04 test-195869-st28 Jan 28 22:10:06 test-195869-st28 Jan 28 22:10:08 test-195869-st28 Jan 28 22:10:10 test-195869-st28 Jan 28 22:10:12 test-195869-st28 Jan 28 22:10:14 test-195869-st28 Jan 28 22:15:16 test-195869-st28 Jan 28 23:12:34 test-195869-st28 Jan 28 23:12:36 test-195869-st28 Jan 28 23:12:38 test-195869-st28 Jan 28 23:12:40 test-195869-st28 Jan 28 23:12:42 test-195869-st28 Jan 28 23:12:44 test-195869-st28 Jan 28 23:12:46 test-195869-st28 Jan 28 23:12:48 test-195869-st28 Jan 28 23:12:50 test-195869-st28 Jan 28 23:12:52 test-195869-st28 Jan 29 13:12:18 test-195869-st28 Jan 29 13:12:20 test-195869-st28 Jan 29 13:12:22 test-195869-st28 Jan 29 13:12:24 test-195869-st28 Jan 29 13:12:26 test-195869-st28 Jan 29 13:12:28 test-195869-st28 Jan 29 13:12:30 test-195869-st28 Jan 29 13:12:32 test-195869-st28 Jan 29 13:12:34 test-195869-st28 Jan 29 13:12:36 test-195869-st28
所需的輸出是繼
Jan 28 22:10:02 test-195869-st28
...
Jan 28 22:10:14 test-195869-st28
Jan 28 22:15:16 test-195869-st28
Jan 28 23:12:34 test-195869-st28
...
Jan 29 13:12:36 test-195869-st28
所有中斷值得總結(一切掉落在單30秒間隔爲單停運)。但是,有單一的第二次中斷應作爲單個條目保留在日誌中。
直到現在我試圖做的是使用awk閱讀從文件:
awk 'BEGIN{prevDt=0;}
{
getDate="date -d \""$1" "$2" "$3"\" \"+%s\""
print "Get date:" (getDate);
while ((getDate | getline date) > 0) {
Diff=date-prevDt
prevDt=date;
print "Difference: "Diff" "$1" "$2" "$3" "$12;
}
close(getDate);
} END { print $date }'
我當時就想,用於以後的比較這種差別。
謝謝
在最小編輯你的問題來格式化使用'{}'編輯按鈕,您的樣品的輸入和輸出,並提供到目前爲止你已經嘗試了什麼。擺脫所有'...'和其他任何可能導致您的示例輸入/輸出無法測試的內容。 –
所以你需要在輸出中包含'...'的行,對吧?你有沒有或可以獲得GNU awk?爲什麼'Jan 28 23:12:34 test-195869-st28 ... Jan 29 13:12:36 test-195869-st28'在輸出中分組,好像它們是30秒範圍一樣?如果輸入具有重疊的時間戳,那麼輸出是什麼'10:20:00 ... 10:20:20 ... 10:20:40'? –