作者rickieyang (Rickie Yang)
看板Linux
標題Re: [問題] 如合搜尋當天第一筆時間前的資訊
時間Wed Apr 6 23:20:52 2016
BEGIN{
p_id="";
id="";
p_date="";
}
/^ *[0-9]/{
p_id=id;
id=$2
}
/^ Time/{
if ($2" "$3 != p_date) {
if (p_date != ""){
printf("last record of %s: %d\n",gensub(/start:/,"","1",p_date),p_id)
printf("1st record of %s: %d\n",gensub(/start:/,"","1",$2)" "$3,id)
}
p_date=$2" "$3
}
}
※ 引述《nashsai (納許賽)》之銘言:
: Hi
: 我有一個文件為
: --------------------------------------------------------
: % id status user
: ---------------------------------
: 0 140 complete auser
: Details:
: Time start:Apr 6,2016 18:14:35
: % id status user
: ---------------------------------
: 0 141 complete buser
: Details:
: Time start:Apr 6,2016 18:45:35
: .
: .
: .
: .
: -------------------------------------------------------
: id是按照時間排的.
: 我想知道每天的第一筆ID與最後一筆ID
: 要使用什麼方法來做比較快
: 目前想到可能是搜到第一筆 日期(ex: Apr 6)時 印出前兩行 然後awk print $2
: 最後一筆可能用隔天的id-1
: 不知道我的想法對嘛
: 請各位看看 感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.224.29.108
※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1459956056.A.06B.html
※ 編輯: rickieyang (36.224.29.108), 04/06/2016 23:31:03
→ rickieyang: 如果確定 id 是連續的, 不用記下 p_id, id-1 就可以了 04/07 00:13
→ bitlife: 好的程式習慣,還是要記,然後加一行比對p_id不等於id-1時 04/07 11:14
→ bitlife: 發出錯誤訊息 04/07 11:14
→ rickieyang: 原文資訊只有"ID是照時間排的",不確定是否連續,所以.. 04/07 15:01
→ bitlife: 我的意思是就算連線還是照好習慣寫,會有意想不到的收穫 04/07 17:02
→ bitlife: 連續 04/07 17:02
→ bitlife: 都照好習慣寫的程式,可以互相check,發現意想不到又難以發 04/07 17:03
→ bitlife: 現的錯誤.程式是人寫的,難免有錯,或許本來設計連續,結果 04/07 17:04
→ bitlife: 在異常情況下跳號了,上述照好習慣寫的程式就能查覺,或者 04/07 17:04
→ bitlife: 反而找到自己這邊程式的罕見的異常流程錯誤.反正就是哪天 04/07 17:05
→ bitlife: 萬一印出錯誤訊息,能知道有異常,而不是讓異常錯誤繼續擴 04/07 17:06
→ bitlife: 散 04/07 17:06
推 kenwufederer: 這是甚麼語言? 04/08 02:52
→ kenwufederer: C嗎? 04/08 03:06
→ rickieyang: awk 04/08 09:05
推 kenwufederer: 跪 推一下, 04/08 15:14
→ kenduest: rickieyang 對 awk 真的很熟悉:) 04/11 05:32