2016-04-21 14 views
0

Ich habe mehrere tausend .NC-Dateien, die jeweils auf die Größe (lat/lon) einer anderen Gruppe von Dateien zugeschnitten werden müssen. Ich will nur Daten von 70-90N, aber die langen Dateien enthalten globale Daten. Laufen ncdump auf longFile1.nc gibtAusschnitt aus vielen netcdf-Dateien mit Dimensionen aus einer anderen Datei in Unix

dimensions: 
    altitude = 40 
    dim = 55890; 
    nv = 2; 

und läuft ncdump auf shortFile1.nc gibt

dimensions: 
    fakeDim14 = 8111; 
    fakeDim15 = 1; 

longFile1.nc so geschnitten werden muss, dass dim = 8111. Die kurze Datei Dimension Längenänderungen für jede Datei. Ich weiß, dass ich den Anfang jeder langen Datei brauche, aber der Endpunkt wird jedes Mal anders sein.

Ich kann longFile1.nc trimmen mit

ncks -C -d it,0,8010 -v lat,lon,instant_cloud_phase longFile1.nc -o trimmedLongFile1.nc 

aber ich weiß nicht, wie das von ihnen für alle zu tun, vor allem, weil die Länge ändert sich mit jeder Datei. Ich muss auch von den Indizes 0-8010 gehen, um die richtigen Breitengrenzen einzuhalten. Gibt es eine Möglichkeit, die erste Dimension aus jeder kurzen Datei zu lesen und sie dann im obigen nco-Befehl für jede entsprechende lange Datei zu verwenden? Ist das nco Befehl sogar der beste Weg, dies zu tun?

Vielen Dank im Voraus!

Antwort

0

Verwenden Sie den NCO ncdmnsz filtern und das Ganze in einer Schleife über Dateien setzen:

for fl in `ls longFile*.nc`; do 
    dmnsz=`ncdmnsz fakeDim14 $fl` 
    ncks -F -d it,,$dmnsz -v ... 
done 

Beachten Sie die Verwendung von -F für 1-basierte Indizes.