文件內數字轉換的方法(分轉秒 時轉秒) - Linux

Table of Contents

hello

我有一個文件內容是這樣

-----------------
12.6m
28s
2.1h
29s
18.4m
------------------

現在需要將裡面的時間加起來

大概有一萬多筆

想說跑 while 讓他去加總

但遇到的問題是如何將時間格式都轉成S(秒)再轉到另外一個文件
例如跑完變成

--------------------
756s
28s
7560s
29s
1104s
---------------------

後面那個s不用也沒關係 主要是格式要統一

或是有其他的好方法

一時之間想不到怎麼弄 請各位幫忙
感謝


--

All Comments

Gilbert avatarGilbert2016-04-06
python
Iris avatarIris2016-04-07
awk 'BEGIN{sum=0}
David avatarDavid2016-04-09
/s$/{sum+=substr($1,1,length($1-1))}
/m$/{sum+=substr($1,1,length($1-1))*60}
/h$/{sum+=substr($1,1,length($1-1))*3600}
Tracy avatarTracy2016-04-11
END{print sum" secs"}' filename
Sarah avatarSarah2016-04-12
試跑五萬筆 real0m0.110s, user0m0.104s, sys0m0.003s
Ida avatarIda2016-04-16
perfect code
Hedwig avatarHedwig2016-04-17
我大概會用python 去處理lol
Ina avatarIna2016-04-22
ruby直接加XD
Carol avatarCarol2016-04-26
我有回應一段Python寫法文章但是要跑比較久,刪文了
Frederic avatarFrederic2016-05-01
Blanche avatarBlanche2016-05-03
沒有最佳化,慢。不過 python 處理字串上這類向來都不會
贏 perl or awk 就是,因為非 python 專長
Sierra Rose avatarSierra Rose2016-05-08
感謝各位 我研究看看
Skylar Davis avatarSkylar Davis2016-05-08
我那 code 寫不好,因為當初我認為可能有極巨大數值
Jack avatarJack2016-05-09
其實程式碼後續改一下用一般 float 方式記錄計算就好XD
James avatarJames2016-05-12
for i in `cat your_file`;do echo $i |
sed -e 's/m$/*60/g' -e 's/h$/*3600/g' \
James avatarJames2016-05-12
;done |paste -sd + |bc
Una avatarUna2016-05-13
sed 中少了 -e 's/s$//g'
Zora avatarZora2016-05-14
為什麼 sed 都要加 g ?