수천 개의 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 위 또는 아래로 설정하려는 것 같습니다.