首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sed (或其他GNU/Linux工具)在边界框中查找GPS?

使用sed (或其他GNU/Linux工具)在边界框中查找GPS?
EN

Stack Overflow用户
提问于 2022-03-06 19:37:57
回答 1查看 40关注 0票数 0

我希望从一个非常大的csv文件过滤到一个更小的使用宽笔画命令行工具。

示例数据如下:

代码语言:javascript
复制
2021-03-19 09:37:00,LISBON,39.1660,-9.5114,18.5600,60.3886
2021-03-19 09:38:00,LISBON,38.8799,-9.3713,19.1051,27.9254
2021-03-19 09:39:00,LISBON,38.5964,-8.8315,19.1044,29.2456
2021-03-19 09:40:00,LISBON,38.4241,-8.9433,18.1184,35.7412
2021-03-19 09:41:00,LISBON,38.8015,-8.6765,17.7960,41.2380
2021-03-19 09:42:00,LISBON,38.4844,-9.0106,19.4660,27.1470
2021-03-19 09:43:00,LISBON,38.3213,-8.9620,19.7043,45.5808
2021-03-19 09:44:00,LISBON,38.9479,-9.1680,19.0704,26.8376
^C21-03-19 09:45:00,LISBON,37.9198,-9.2775,17.8219,88.4726

这里的第三个和第四个字段是GPS坐标。

我希望能够将它们过滤到距离中心点25公里以内,38.7077507, -9.1365919sed对此非常有效。

例如- sed -n '/38.7[2-4]..,-9.1[3-7]../p'变得相当接近。

然而,我想要使‘包围框’更大,这是事情变得有点混乱。例如,假设我想把经度一直延伸到-8.9。你如何为这个写一个正则表达式?

我尝试了类似于sed -n '/38.7[2-4]..,-[8-9]...../p'的东西,但问题是当我想在'-8.9‘停止时,返回'-8.1’太远了。

我知道,如果我让它使用更丰富的语言(例如Python),这是相当简单的,但我想在前端(在数据管道受伤之前)做同样多的工作,而sed在这方面的性能非常好。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-06 19:45:27

不想为此滥用sed,所以这里有一个awk解决方案。

代码语言:javascript
复制
awk -F, '{x=38.7077507-$3; y=-9.1365919-$4; if(x^2+y^2<0.3^2) print}' input.txt
#           ^~~~~~~~~~ x     ^~~~~~~~~~ y              ^~~ r
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71373613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档