텍스트 파일의 인덱스를 사용하여 netcdf 변수 연결

텍스트 파일의 인덱스를 사용하여 netcdf 변수 연결

vel_u 변수가 포함된 netcdf 파일이 여러 개 있고 그 파일에서 특정 값을 추출하고 싶습니다. 나는 이 값들의 지수를 결정했습니다. I.txt 및 J.txt에 저장됩니다. 아래 코드에서 볼 수 있듯이 함수를 사용하여 연결합니다.

ncrcat -C -F -d dimension1,from,to -d dimension2,from,to -v variable files_to_extract_from.nc file_to_write_to.nc

아래 코드를 실행하면 루프가 실행될 때마다 동일한 오류가 발생합니다.

    ncrcat: ERROR parsing hyperslab specification for dimension nj_u,,
Must specify minimum and/or maximum value since stride is also empty
ncrcat: HINT Conform request to hyperslab documentation at http://nco.sf.net/nco.html#hyp

${arrJ[i]},${arrJ[i+1]}이로 인해 내 코드의 "from, to" 부분이 제대로 작동하지 않는 것 같습니다 . 따라서 인덱스에 대해 알지 못합니다. 내 색인은 I.txt 및 J.txt에 저장됩니다. 예를 들어 181, 195, ... 그리고 다음 인덱스를 사용하여 파일에서 추출하려는 각 루프입니다. 그래서 반복 1

nj_u,181,182

반복 2

nj_u,195,196

등. 이것은 내 코드입니다.

#!/bin/bash

outputNumber="$(ls -1q *_??????.nc | wc -l)" # what is the number of files in this directory
echo "the number of output netcdf files is ${outputNumber}"

valueI= `cat I.txt`
valueJ= `cat J.txt`
for ((i=1; i<=outputNumber; i++))
do
        arrI=($valueI)
        arrJ=($valueJ)

        ncrcat -C -F -d nj_u,${arrJ[i]},${arrJ[i+1]} -d ni_u,${arrI[i]},${arrI[i+1]} -v vel_u *_??????.nc NewFile.nc
#every loop I should extract four numbers from every file

done

또 다른 문제는 이 코드를 사용하면 모든 루프에서 NewFile.nc를 덮어쓰는 것처럼 보인다는 것입니다.

두 가지 질문이 있습니다.

  1. 올바른 인덱스로 읽는지 어떻게 확인합니까?
  2. 이전 파일을 덮어쓰지 않고 각 루프에서 추출된 값을 동일한 .nc 파일에 어떻게 저장할 수 있나요?

답변1

나는 추측 I.txt하고 값을 J.txt포함할 것인가 outputNumber? arrI색인으로 시작한 다음 0필요합니다.

for ((i=0; i<outputNumber; i++))

그렇지 않으면 오류 메시지에 표시된 대로 인덱스가 너무 높아 매개변수가 누락되게 됩니다.

그런데 왜 arrI=($valueI)모든 루프에 할당합니까? 루프 전에 한 번만 수행할 수 있습니다.

관련 정보