Ну не хотите sed используйте awk:echo 01:00 | awk -F : '{ if (NF>2) print ($1*60+$2)*60+$3 ; else print $1*60+$2 }'
Или так может будет быстрееecho 2:02:00 | awk -F : '{ a=$1*60+$2 ; if (NF<3) print a ; else print a*60+$3 }'
Пользователь решил продолжить мысль 21 Марта 2014, 01:48:49:
Нет, одинаково 7-8 мс
Пользователь решил продолжить мысль 21 Марта 2014, 04:49:35:
Можно еще скриптом (написал на bash, но можно без проблем на любом):#!/bin/bash
# time2second.sh
i=$#
s=0
l=$i
while let i
do
s=$[$s+${!i}*60**($l-$i)]
i=$[i-1]
done
echo $s
Если через конвейер, то вызывать через xargsecho 2:02:15 | xargs -d: ./time2second.sh
Пользователь решил продолжить мысль 21 Марта 2014, 22:14:04:
Нашел что искал (кстати работает быстрее всех):#!/bin/bash
# time2second.sh
echo $[${BASH_ARGV[0]}+${BASH_ARGV[1]:-0}*60+${BASH_ARGV[2]:-0}*3600]