如合搜尋當天第一筆時間前的資訊 - Linux

Table of Contents

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
: 不知道我的想法對嘛
: 請各位看看 感謝

--

All Comments

Jacob avatarJacob2016-04-10
如果確定 id 是連續的, 不用記下 p_id, id-1 就可以了
David avatarDavid2016-04-14
好的程式習慣,還是要記,然後加一行比對p_id不等於id-1時
發出錯誤訊息
Carolina Franco avatarCarolina Franco2016-04-16
原文資訊只有"ID是照時間排的",不確定是否連續,所以..
Ivy avatarIvy2016-04-18
我的意思是就算連線還是照好習慣寫,會有意想不到的收穫
連續
Suhail Hany avatarSuhail Hany2016-04-21
都照好習慣寫的程式,可以互相check,發現意想不到又難以發
Emily avatarEmily2016-04-25
現的錯誤.程式是人寫的,難免有錯,或許本來設計連續,結果
在異常情況下跳號了,上述照好習慣寫的程式就能查覺,或者
Edward Lewis avatarEdward Lewis2016-04-28
反而找到自己這邊程式的罕見的異常流程錯誤.反正就是哪天
Wallis avatarWallis2016-04-30
萬一印出錯誤訊息,能知道有異常,而不是讓異常錯誤繼續擴
Kelly avatarKelly2016-05-05
這是甚麼語言?
Hamiltion avatarHamiltion2016-05-06
C嗎?
Selena avatarSelena2016-05-11
awk
Frederic avatarFrederic2016-05-14
跪 推一下,
Steve avatarSteve2016-05-17
rickieyang 對 awk 真的很熟悉:)