特定の日付形式 (hh:mm:ss) を次のように分割する必要があります: 10:30:50 のような変数: hour=10; 分= 30および秒= 50は、bashスクリプトでgrepを実行します。
たとえば、変数で時間を取得します。 time="10:30:50" そして、次の式で秒のみを取得します。
秒=
echo $time | grep -oE "[^:]+$"
分と時間を取得するのに役立ちますか?
を使用しread
ます。grep
これはシェルの組み込みコマンドであるため、sed
や他の外部コマンドよりも効率的です。
time="10:30:50"
IFS=: read hr min sec <<< "$time"
出力:
$ echo "$hr"
10
$ echo "$min"
30
$ echo "$sec"
50
下記参照 :
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
@fedorqui、@kent、
$ echo ${time:0:2}
10
$ echo ${time:3:2}
30
$ echo ${time:6:2}
50
sed、grep、awk は外部コマンドです。シェル組み込みコマンドを使用して、必要な情報を抽出してみてください
D=12:10:12
IFS=:
read H M S <<< $D
注: <<< は変数からの読み取りを意味します
と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