netcdf 파일에서 숫자를 추출하여 각 루프마다 다른 netcdf 파일에 저장하는 다음 코드가 있습니다.
mapfile Latitude < <(tr -s ' ' '\n' < final_ADCP_Saved.matLatitude.txt) #tr is transform from to -s is squeeze. So look in the text files for all the spaces and replace them by newline '/n'
mapfile Longitude < <(tr -s ' ' '\n' < final_ADCP_Saved.matLongitude.txt)
echo "length of Lat is ${#Latitude[@]}"
echo "length of Lon is ${#Longitude[@]}"
outputNumber="$(ls -lq *_??????.nc | wc -l)"
echo "the number of output netcdf fles is ${outputNumber}"
valueI=`cat I.txt`
valueJ=`cat J.txt`
arrI=($valueI)
arrJ=($valueJ)
for ((i=1; i<=outputNumber; i++))
do
echo "geknoei$i.nc"
ncrcat -C -F -d nj_u,${arrJ[i]},${arrJ[i+1]} -d ni_u,${arrI[i]},${arrI[i+1]} -v vel_u *_??????.nc gekneoi$i.nc
done
공간 문제로 인해 입력 파일을 압축해야 했고 이 코드는 더 이상 작동하지 않습니다. 필요한 것을 추출하기 위해 루프에서 파일의 압축을 한 번에 하나씩 풀고 루프가 끝날 때 다시 압축하는 코드를 작성하는 것이 가능한지 궁금합니다.
그럼 대략적으로 다음과 같습니다.
mapfile Latitude < <(tr -s ' ' '\n' < final_ADCP_Saved.matLatitude.txt) #tr is transform from to -s is search. So look in the text files for all the spaces and replace them by newline '/n'
mapfile Longitude < <(tr -s ' ' '\n' < final_ADCP_Saved.matLongitude.txt)
echo "length of Lat is ${#Latitude[@]}"
echo "length of Lon is ${#Longitude[@]}"
outputNumber="$(ls -lq *_??????.nc | wc -l)"
echo "the number of output netcdf fles is ${outputNumber}"
valueI=`cat I.txt`
valueJ=`cat J.txt`
arrI=($valueI)
arrJ=($valueJ)
for ((i=1; i<=outputNumber; i++))
do
echo "geknoei$i.nc"
gunzip *_??????.nc.gz
ncrcat -C -F -d nj_u,${arrJ[i]},${arrJ[i+1]} -d ni_u,${arrI[i]},${arrI[i+1]} -v vel_u *_??????.nc gekneoi$i.nc
gzip *_??????.nc
done
문제는 이렇게 하면 모든 파일의 압축이 한꺼번에 풀리므로 많은 공간을 차지한다는 것입니다. 한 번에 하나의 파일 압축을 풀면 ncrcat 코드가 사용 가능한 모든 -unzipped- .nc 파일에서 추출되기 때문에 더 이상 작동하지 않습니다.
라인 작업을 계속하면서 한 번에 하나의 .nc 파일 압축을 풀려면 어떻게 해야 합니까 ncrcat -C -F -d nj_u,${arrJ[i]},${arrJ[i+1]} -d ni_u,${arrI[i]},${arrI[i+1]} -v vel_u *_??????.nc gekneoi$i.nc
?