help-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Duration between two time stamps


From: Alex fxmbsw7 Ratchev
Subject: Re: Duration between two time stamps
Date: Thu, 19 Aug 2021 13:19:43 +0200

bc <<<$B-$A

maybe needs scale=5 or so if u get only int back

On Thu, Aug 19, 2021, 13:14 hancooper <hancooper@protonmail.com> wrote:

>
> ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> On Thursday, August 19, 2021 5:10 AM, Tapani Tarvainen <
> bash@tapanitarvainen.fi> wrote:
>
> > On Thu, Aug 19, 2021 at 11:23:22AM +0900, Koichi Murase (
> myoga.murase@gmail.com) wrote:
> >
> > > In Bash 5.0+, you may use the special shell variables, EPOCHSECONDS
> > > (for granularity of seconds) or EPOCHREALTIME (for finer granularity).
> > > A=$EPOCHREALTIME
> > > your_search_command
> > > B=$EPOCHREALTIME
> >
> > Yes. And it's worth noting that $EPOCHREALTIME does not drop
> > trailing zeroes, there're always six digits after the decimal point.
> >
> > So if you're happy with the difference in microseconds, you can
> > simply discard the decimal points and subtract the resulting
> > microsecond values:
> >
> > echo $((${B/.}-${A/.}))
> >
> > If you want it in seconds but don't want to spawn bc or the like, you
> > can add the decimal point back, e.g., like this:
> >
> > udiff1=$((${B/.}-${A/.}+1000000))
> > sec1=${udiff1::-6}
> > echo $((sec1-1)).${udiff1#$sec1}
> >
> > An extra second is added and later substracted to deal with leading
> > zeroes in case the time difference is less than a second.
> >
> > Incidentally, why does ${var:offset} with a negative offset result in
> > an empty string when the variable is shorter than the offset? E.g.,
> >
> > x=abc
> > echo ${x: -6}
> >
> > I find that counterintuitive, and it'd actually be useful to
> > be able to get "at most N characters from the end".
>
> Am not getting output from $EPOCHREALTIME
>
>       A=$EPOCHREALTIME
>       grep --null -r -l "${isufx[@]}" -e "$ptrn" -- "${fdir[@]}" |
>         sed -z "${sta}~${stp}!d"                                 |
>         PARALLEL_SHELL=bash psgc=$sgc psgr=$sgr ptn=$ptrn        \
>         parallel -m0kj"$procs"                                   \
>         'for fl in {}; do
>            printf "\n%s\n\n" "$psgc==> $fl <==$psgr"
>            grep --color=always -ni '"${ictx[@]@Q}"' -e "$ptn" -- "$fl"
>          done'
>       B=$EPOCHREALTIME
>       DT=$( ${B}-${A} | bc )
>       printf '\n%s\n' "A:$A |  B:$B | DT: $DT"
>
> As I had GNU bash, version 4.4, I have just installed
>
> GNU bash, version 5.1.8(1)-release (x86_64-pc-linux-gnu)
>
>
>
>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]