Если файл данных GPS только растет, а не перезаписывается, то вы будете писать одни и те же данные снова и снова, поэтому вы получаете дубликаты.
Вы должны как-то продолжать кормить новые строки awk. Это можно сделать с помощью tail --follow:
tail -f gpsoutput.tr | ./gpsoutput.awk
Тогда ваш gpsoutput.awk будет исполняемым скриптом:
#!/usr/bin/awk -f
BEGIN {
FS = ",";
}
$1 == "$GPRMC" {
converted = $8*1.852;
print $4, $6 >> "data1.txt";
printf "%.3f \n", converted >> "speed.txt";
print $2 >> "gpstime.txt";
# Optional: add fflush() here.
}