GabiS
(usa Ubuntu)
Enviado em 16/05/2017 - 13:30h
Boa tarde pessoal!
Estou tentando fazer o seguinte:
Tenho um arquivo como o arquivo abaixo:
10:51:37,43
10:51:39,37
10:51:40,03
10:51:40,67
10:51:41,29
10:51:41,97
10:51:42,60
10:51:43,24
10:51:43,89
10:51:44,52
10:51:45,16
10:51:45,80
10:51:46,43
10:51:47,07
10:51:47,71
.
.
.
Preciso subtrair o valor de cada linha pelo valor da primeira linha (como no exemplo abaixo) e armazenar o resultado em um outro aquivo:
10:51:37,43 - 10:51:37,43
10:51:39,37 - 10:51:37,43
10:51:40,03 - 10:51:37,43
.
.
.
Cada coluna se refere á hora:minuto:segundo:milisegundo respectivamente
Eu fiz assim, mas não está funcionando, sou iniciante em shell script, alguém pode me ajudar?
#!/bin/bash
TIMESTAMP="1-sp-C-timestamp.dat";
cat $TIMESTAMP | sed -n '1p' >>primeiro.txt ;
h=`cat primeiro.txt | awk -F : '{print $1}'`;
m=`cat primeiro.txt | awk -F : '{print $2}'`;
s=`cat primeiro.txt | awk -F : '{print substr($3,1,2)}'`;
ms=`cat primeiro.txt | awk -F : '{print substr($3,4,5)}'`;
cat $TIMESTAMP | while read line
do
echo "$line" |
H=`awk -F : '{print $3}'` &&
M=`awk -F : '{print $2}'` &&
S=`awk -F : '{print substr($3,1,2)}'`&&
MS=`awk -F : '{print substr($3,4,5)}'`|
TMs=$($MS-$ms) |
if [ $S -lt $s ]; then
TS=$(($S+60)-$s) &&
M=$($M-1);
else
TS=$($S-$s);
fi |
if [ $M -lt $m ]; then
TM=$(($M+60)-$m) &&
H=$($H-1);
else
TM=$($M-$m);
fi |
TH=$($H-$h) ;
$TH":"$TM":"$TS","$TMs;
done >> teste.txt
A lógica acredito que está correta....meu problema é com a sintaxe