我有一个硬件GPS输出一些数据:
sudo cat /dev/ttyGPS_Device | grep -a GPRMC
它每隔半秒钟就打印一次,如下所示:
$GPRMC,171450.000,A,4239.245592,N,07349.887355,W,0.000,116.6,150420,,,A*74 $GPRMC,171503.000,A,4239.245592,N,07349.887355,W,0.000,116.6,150420,,,A*73 $GPRMC,171504.000,A,4239.245592,N,07349.887355,W,0.000,116.6,150420,,,A*74
我可以通过这样做来过滤掉“态度和经度”:
sudo cat /dev/ttyACM2 | stdbuf -oL grep -a GPRMC | stdbuf -oL cut -d',' -f 4-7 | tr ',' '\t'
这个产出看上去要好得多:
4239.245592 N 07349.887355 W 4239.245592 N 07349.887355 W 4239.245592 N 07349.887355 W
我希望能够对数据进行一些数学计算和格式化。具体来说,前导零必须变成“-”,这两个值都必须乘以100。期望产出:
42.39245592 N -73.49887355 W 42.39245592 N -73.49887355 W 42.39245592 N -73.49887355 W
我会同意一个非bash
解决方案,但我更喜欢一个好的一个班轮。我用来获取GPS数据的硬件是爱立信H5321 gw移动宽带模块。
发布于 2020-04-15 20:04:01
单管壳:
xargs -I"{}" -l1 sh -c 'IFS=,;set -- $1;LC_NUMERIC=C;printf "%f N %f W\n" "$4" "$6"' {}
显然,作为@DiegoTorresMilano提到,shell算法只处理整数,因此不对值进行缩放。
https://stackoverflow.com/questions/61234872
复制相似问题