열 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"남쪽 또는 북쪽을 선택합니다

전체 파일을 이동하고 모든 위도를 0 위 또는 아래로 설정하려는 것 같습니다.

관련 정보