在csv上使用bash脚本-awk和for循环

时间:2019-10-01 22:20:51

标签: bash loops csv for-loop awk

我每个月的每一天都有一个csv文件,并且csv文件具有全局点数据。我正在尝试根据纬度和纵向范围裁剪每个csv,然后导出这些csv。这是我一个月内尝试5天的方法。

for f in ./VBD_npp_d20190[1-5]*.csv; do 
    awk '{for(i=$4>=3.070359 && i=$4<=40.926137 && i=$5>=107.159444 && i=$5<=128.204291){printf "%s ",$i;} print ""}' "$f" > "$f".new;
done

此dd不起作用。 $4$5列列出了纬度和经度。

请告知我要去哪里了。

谢谢

提洛

2 个答案:

答案 0 :(得分:0)

试图用“ for”来做?有趣的方法,但不是我曾经想过的。对我们来说(一个或多个if语句)要容易得多

伪代码

{
    if ($4 > minLat && $4 < maxLat && $5 > minLon && $5 < maxLon)
    {
        print
    }
}

编辑:实际上看起来您可能只是打错了for而不是if吗? (并非完全如此,您将删除多余的i=位并更改打印内容

for f in ./VBD_npp_d20190[1-5]*.csv; do 
    # TODO: Modify the print to use $4 (and $5 ?) instead of $i
    awk '{if($4>=3.070359 && $4<=40.926137 && $5>=107.159444 && $5<=128.204291){printf "%s ",$i;} print ""}' "$f" > "$f".new;
done

答案 1 :(得分:0)

这终于奏效了-

对于./VBD_npp_d201901*_global*.csv中的i;执行o = basename $i global_noaa_ops_v23.csv china_noaa_ops_v23.csv;头-1 $ i> $ o; awk -F,'{if($ 4> = 3.07 && $ 4 <= 40.93 && $ 5> = 107.16 && $ 5 <= 128.20)print;}'$ i >> $ o; done

相关问题