看板 Linux 關於我們 聯絡資訊
hello 我有一個文件內容是這樣 ----------------- 12.6m 28s 2.1h 29s 18.4m ------------------ 現在需要將裡面的時間加起來 大概有一萬多筆 想說跑 while 讓他去加總 但遇到的問題是如何將時間格式都轉成S(秒)再轉到另外一個文件 例如跑完變成 -------------------- 756s 28s 7560s 29s 1104s --------------------- 後面那個s不用也沒關係 主要是格式要統一 或是有其他的好方法 一時之間想不到怎麼弄 請各位幫忙 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.216.91.85 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1459697197.A.20E.html
Adama: python 04/03 23:41
rickieyang: awk 'BEGIN{sum=0} 04/04 02:33
rickieyang: /s$/{sum+=substr($1,1,length($1-1))} 04/04 02:34
rickieyang: /m$/{sum+=substr($1,1,length($1-1))*60} 04/04 02:34
rickieyang: /h$/{sum+=substr($1,1,length($1-1))*3600} 04/04 02:34
rickieyang: END{print sum" secs"}' filename 04/04 02:35
rickieyang: 試跑五萬筆 real0m0.110s, user0m0.104s, sys0m0.003s 04/04 02:49
kenduest: perfect code 04/04 03:10
lc85301: 我大概會用python 去處理lol 04/04 10:25
kira925: ruby直接加XD 04/04 10:32
kenduest: 我有回應一段Python寫法文章但是要跑比較久,刪文了 04/04 10:44
kenduest: 程式碼 http://pastebin.com/B7CnAFBH 04/04 10:47
kenduest: 沒有最佳化,慢。不過 python 處理字串上這類向來都不會 04/04 10:49
kenduest: 贏 perl or awk 就是,因為非 python 專長 04/04 10:49
nashsai: 感謝各位 我研究看看 04/04 15:46
kenduest: 我那 code 寫不好,因為當初我認為可能有極巨大數值 04/04 16:50
kenduest: 其實程式碼後續改一下用一般 float 方式記錄計算就好XD 04/04 16:51
abelyang: for i in `cat your_file`;do echo $i | 04/14 15:11
abelyang: sed -e 's/m$/*60/g' -e 's/h$/*3600/g' \ 04/14 15:11
abelyang: ;done |paste -sd + |bc 04/14 15:12
abelyang: sed 中少了 -e 's/s$//g' 04/14 15:14
rickieyang: 為什麼 sed 都要加 g ? 04/16 04:45