首页 > 解决方案 > 使用 awk 修剪 GPS 信息

问题描述

在一个小 bash 脚本中,我只是尝试修剪 GPS 输入数据,以便在单独的变量中具有经度和纬度值:

  echo $geo_data
  GPS_latitude=$( echo $geo_data | awk -F"+|-" '{print substr($0,index($0,$2-1),1) $2}' )
  GPS_longitude=$( echo $geo_data | awk -F"+|-" '{print substr($0,index($0,$3-1),1) $3}' )
  echo $GPS_latitude
  echo $GPS_longitude

但我得到的似乎混淆了每个组件前面的 +/- 符号:

-04.7367+055.5230
-04.7367
-055.5230

我认为 index() 参数可以完全避免这种情况,但显然我做错了什么。知道如何解决这个问题吗?

标签: awksedgrepgps

解决方案


使用 bash 和正则表达式:

geo_data="-04.7367+055.5230"

[[ "$geo_data" =~ ^([+-][0-9.]+)([+-][0-9.]+)$ ]]
echo "${BASH_REMATCH[1]} ${BASH_REMATCH[2]}"

输出:

-04.7367 +055.5230

推荐阅读