我需要分割给定的日期格式(hh:mm:ss),如:10:30:50 在变量如:小时= 10;在bash脚本中,minute = 30和seconds = 50 whit grep。
我得时间不变,例如:time =“10:30:50” 我只用以下表达式获得秒数:
秒=
echo $time | grep -oE "[^:]+$"
获得分钟和时间的任何帮助?
答案 0 :(得分:8)
使用read
。它是一个shell内置命令,因此比grep
,sed
和其他外部命令更有效。
time="10:30:50"
IFS=: read hr min sec <<< "$time"
输出:
$ echo "$hr"
10
$ echo "$min"
30
$ echo "$sec"
50
答案 1 :(得分:1)
见下文:
kent$ time="10:30:50"
kent$ h=$(awk -F: '$0=$1' <<<"$time")
kent$ m=$(awk -F: '$0=$2' <<<"$time")
kent$ s=$(awk -F: '$0=$3' <<<"$time")
kent$ echo $h,$m,$s
10,30,50
答案 2 :(得分:0)
使用sed
:
echo '10:30:50' | sed 's/\([0-9]\+\):\([0-9]\+\):\([0-9]\+\)/hours=\1 minutes=\2 seconds=\3/'
使它成为一个功能:
function stringToTime() {
eval $( echo "$1" | sed 's/\([0-9]\+\):\([0-9]\+\):\([0-9]\+\)/hours=\1 minutes=\2 seconds=\3/' )
}
现在你可以打电话给它:
stringToTime 10:30:50
echo $hours hours, $minutes minutes and $seconds seconds
答案 3 :(得分:0)
sed,grep,awk是外部命令,尝试使用shell builtin命令提取所需信息
D=12:10:12
IFS=:
read H M S <<< $D
注意:&lt;&lt;&lt;意味着从变量中读取
答案 4 :(得分:0)
@fedorqui, @kent,
$ echo ${time:0:2}
10
$ echo ${time:3:2}
30
$ echo ${time:6:2}
50