看板 Linux 關於我們 聯絡資訊
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