列1の値に基づいてファイルを別の場所に移動するif / thanステートメントを作成しますか?

列1の値に基づいてファイルを別の場所に移動するif / thanステートメントを作成しますか?

何千もの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
  • next残りの行はスキップして次のファイルに移動します。
  • $1<0?"south":"north"南または北を選択します

ファイル全体を移動し、すべての緯度をゼロ上または下に設定したいようです。

おすすめ記事