У меня есть следующий код, который извлекает числа из файлов 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
работу линии?