我有数千个 xyz(纬度、经度、海拔)文本文件,我想按纬度或经度分隔它们。我可以如何以及使用哪些命令来创建“如果纬度(列1)大于-1.00,则移动到此目录”?对于我的原始目录中的所有文件。
我已经使用 grep 或 awk 接近了几个不同的命令,但并不完全按照我想要的方式工作。
文件列表示例
2004_2006-361383_Morecambe_Bay_Heysham_Channel_s.xyz
2004_2006-361385_River_Mersey_Langton_Dock_Entrance_s.xyz
2004_2006-361399_Thames_Estuary_Gore_Channel_s.xyz
这是文件前 10 行的示例,其中许多文件有数百万行
-002.9584650 54.0087979 -5.3
-002.9416586 54.0326371 -1.3
-002.9307806 54.0323594 -8.5
-002.9644657 53.9985145 0.8
-002.9680185 54.0019534 -10
-002.9524820 54.0183868 -5
-002.9439942 54.0179227 -4.2
-002.9569578 54.0183595 -5.4
-002.9372192 54.0224494 -3.2
-002.9535454 54.0178188 -4.3
答案1
如果文件没有有趣的名称(即空格)
全局排序
awk 'FNR==1 { printf "mv %s ../dir%d\n",FILENAME,$1 ; next ; }' * | bash
北/南排序
awk 'FNR==1 { printf "mv %s ../%s\n",FILENAME,$1<0?"south":"north" ; next ; }' * | bash
在哪里
FNR == 1
对文件第一行进行操作printf
并将%d
解析为第 1 列的 int 部分- 替换
| bash
为| head -10
检查是否OK next
将跳过剩余行并转到下一个文件。$1<0?"south":"north"
将选择南或北
我猜你想移动整个文件,并且所有纬度都高于或低于 0。