[問題] 文件內數字轉換的方法(分轉秒 時轉秒)

看板Linux作者 (納許賽)時間8年前 (2016/04/03 23:26), 編輯推噓9(9013)
留言22則, 7人參與, 最新討論串1/1
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

04/03 23:41, , 1F
python
04/03 23:41, 1F

04/04 02:33, , 2F
awk 'BEGIN{sum=0}
04/04 02:33, 2F

04/04 02:34, , 3F
/s$/{sum+=substr($1,1,length($1-1))}
04/04 02:34, 3F

04/04 02:34, , 4F
/m$/{sum+=substr($1,1,length($1-1))*60}
04/04 02:34, 4F

04/04 02:34, , 5F
/h$/{sum+=substr($1,1,length($1-1))*3600}
04/04 02:34, 5F

04/04 02:35, , 6F
END{print sum" secs"}' filename
04/04 02:35, 6F

04/04 02:49, , 7F
試跑五萬筆 real0m0.110s, user0m0.104s, sys0m0.003s
04/04 02:49, 7F

04/04 03:10, , 8F
perfect code
04/04 03:10, 8F

04/04 10:25, , 9F
我大概會用python 去處理lol
04/04 10:25, 9F

04/04 10:32, , 10F
ruby直接加XD
04/04 10:32, 10F

04/04 10:44, , 11F
我有回應一段Python寫法文章但是要跑比較久,刪文了
04/04 10:44, 11F

04/04 10:47, , 12F
04/04 10:47, 12F

04/04 10:49, , 13F
沒有最佳化,慢。不過 python 處理字串上這類向來都不會
04/04 10:49, 13F

04/04 10:49, , 14F
贏 perl or awk 就是,因為非 python 專長
04/04 10:49, 14F

04/04 15:46, , 15F
感謝各位 我研究看看
04/04 15:46, 15F

04/04 16:50, , 16F
我那 code 寫不好,因為當初我認為可能有極巨大數值
04/04 16:50, 16F

04/04 16:51, , 17F
其實程式碼後續改一下用一般 float 方式記錄計算就好XD
04/04 16:51, 17F

04/14 15:11, , 18F
for i in `cat your_file`;do echo $i |
04/14 15:11, 18F

04/14 15:11, , 19F
sed -e 's/m$/*60/g' -e 's/h$/*3600/g' \
04/14 15:11, 19F

04/14 15:12, , 20F
;done |paste -sd + |bc
04/14 15:12, 20F

04/14 15:14, , 21F
sed 中少了 -e 's/s$//g'
04/14 15:14, 21F

04/16 04:45, , 22F
為什麼 sed 都要加 g ?
04/16 04:45, 22F
文章代碼(AID): #1N0JOj8E (Linux)