Como efetuar o calculo de horas [RESOLVIDO]

1. Como efetuar o calculo de horas [RESOLVIDO]

Marcos Edson padula
mepedspdla

(usa Outra)

Enviado em 09/11/2018 - 18:30h

Pessoal Boa noite! Uma ajuda Por favor

Como posso efetuar a subtracao de horas em awk em arquivo.txt , gerando um novo campo em um novo arq.txt :

Assim :
Extracao 08:00:00 08:10:00
Compensa 09:00:00 10:25:00

Ficar assim :
Extracao 08:00:00 08:10:00 00:10:00
Compensa 09:00:00 10:25:00 01:25:00

Muito Obrigado!
Vlw


  


2. Re: Como efetuar o calculo de horas [RESOLVIDO]

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 10/11/2018 - 12:27h

Veja se é isso:
#!/bin/bash

# Local do arquivo
arq="$HOME/Documentos/arquivo.txt"

while read linha; do
# pega as colunas
col2=$(echo $linha | awk '{print $2}')
col3=$(echo $linha | awk '{print $3}')
# converte em segundos e calcula a diferença
difs=`echo "$(date -d $col3 +%s) - $(date -d $col2 +%s)" | bc`
# converte o resultado em segundo para HH:MM:SS
h=$(( $difs / 3600 ))
m=$(( $(($difs - $h * 3600)) / 60 ))
s=$(( $difs - $h * 3600 - $m * 60 ))
if [ $h -le 9 ];then h=0$h;fi
if [ $m -le 9 ];then m=0$m;fi
if [ $s -le 9 ];then s=0$s;fi
difh=`echo $h:$m:$s`
# exibe o resultado final desejado
echo $linha $difh
done < $arq

Se quiser salvar num arquivo coloque ">>arquivo-resultado.txt" no final da penúltima linha.


3. Re: Como efetuar o calculo de horas [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 10/11/2018 - 21:05h

mepedspdla escreveu:

Pessoal Boa noite! Uma ajuda Por favor

Como posso efetuar a subtracao de horas em awk em arquivo.txt , gerando um novo campo em um novo arq.txt :

Assim :
Extracao 08:00:00 08:10:00
Compensa 09:00:00 10:25:00

Ficar assim :
Extracao 08:00:00 08:10:00 00:10:00
Compensa 09:00:00 10:25:00 01:25:00

Muito Obrigado!
Vlw

Boa noite.
Segue sugestão:

data=$(printf "%(%Y %m %d)T")
while read -r line;do
echo -n "$line";
sed -r "s/[ ]/\,$data /2;s/[A-Za-z]+/$data/;s/:/ /g" <<< "$line"|awk -F, '{d2=mktime($2);d1=mktime($1);printf " %s\n" ,(d2-d1)/60" Min";}';
done<file.txt

Extracao 08:00:00 08:10:00 10 Min
Compensa 09:00:00 10:25:00 85 Min

Ou
awk '{gsub(/[:]/," ",$2);gsub(/[:]/," ",$3);A="2018 11 10 "$2;B="2018 11 10 "$3;d2=mktime(B);d1=mktime(A);print $1" "$2" "$3" Dif: "(d2-d1)/60,"Min";}' file.txt |sed 's/ /:/2;s/ /:/2;s/ /:/3;s/ /:/3' 

Extracao 08:00:00 08:10:00 Dif: 10 Min
Compensa 09:00:00 10:25:00 Dif: 85 Min

Obs.;
A diferença é fornecida em minutos.

Att.:
Marcelo Oliver


4. como calcular horas em linux

Marcos Edson padula
mepedspdla

(usa Outra)

Enviado em 13/11/2018 - 13:04h

Pessoal, Muito Obrigado pela ajuda, Funcionou corretamente.

Vlw..






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts