正则表达式修复 GPS 数据

正则表达式修复 GPS 数据

我正在寻找在 Linux 上修复文本文件中的 GPS 数据

错误的字符串模型:49:29:37N 005:28:39E

2或3位:2或3位:2或3位(N|S) 2或3位:2或3位:2或3位(E|W)

正确的弦模型:49:29:37 N 005:28:39 E

2或3位:2或3位:2或3位(N|S) 2或3位:2或3位:2或3位(E|W)

任何人都可以帮助我做到这一点吗?

谢谢

尼古拉斯

答案1

在所有四个可能的字母之前插入一个空格sed

sed 's/[NESW]/ &/g' file

输出:

49:29:37 北 005:28:39 东

答案2

如果您只想在代表罗盘方向的数字和字母之间添加空格,我认为这样做可以:

sed -E 's/([0-9]{2,3}:[0-9]{2,3}:[0-9]{2,3})([NS])\s+([0-9]{2,3}:[0-9]{2,3}:[0-9]{2,3})([EW])/\1 \2 \3 \4/g' input.txt

或者不指定input.txt,而是从 stdin 进行管道传输,如果您希望在文件中输出,请> output.txt在末尾添加。

这允许 N/S 和下一个坐标开始的数字之间有任意数量的空格或其他空白字符,并在该位置输出单个空格。如有必要,可以进行调整。

编辑:如果某些输入数据在两个坐标之一的坐标号和方向字母之间已经有空格,但不是两个坐标都存在,请尝试:

sed -E 's/([0-9]{2,3}:[0-9]{2,3}:[0-9]{2,3}) *([NS])\s+([0-9]{2,3}:[0-9]{2,3}:[0-9]{2,3}) *([EW])/\1 \2 \3 \4/g' input.txt

相关内容