【发布时间】:2017-10-15 04:10:23
【问题描述】:
我有一个文本文件,其中包含:
Location 1 40.733596 -74.003139
Location 2 43.758102 -73.975734
Location 3 41.732456 -74.003755
Location 4 42.345907 -71.087001
其中第一列只是位置计数,第二列代表纬度,第三列代表经度。
我正在尝试编写一个 awk 命令以仅打印出特定纬度和经度范围内的位置。
awk -F '\t' '$2>40,$2<=42,$3>=-71,$3<=74 {print $1,$2,$3}'LatLon.txt
在 awk 命令的模式段中,我试图指定第 2 列和第 3 列的范围,它会提示 bash 仅打印 40-42 lat 和 -71 到 -74 lon 范围内的位置。
我收到一个错误提示:
awk: bailing out at source line 1
由于我的 awk 行的模式段。如何正确指定范围?
【问题讨论】:
-
将
,s 更改为&&(未经测试)。如果需要,您也可以使用||。祝你好运。 -
四行都不符合你命令中的四个要求。
-
我发现范围像这样
(40 < $2 && $2 < 42) && (-74 < $3 && $3 < -71)更具可读性——更容易阅读最小值和最大值是什么 -
并且由于您要打印整行,因此您根本不需要操作块
{print $1, $2, $3}- 在真实条件下打印当前记录是 awks 的默认行为。