Dienstag, 29. November 2011

Moleküle nach Größe sortieren

Ich durfte gerade XYZ-Dateien nach der Anzahl an Atomen sortieren. Und da ist es ganz nützlich, das etwas automatisierter zu machen. Die Voraussetzungen sind, dass die Dateien in einem Ordner ein Level drüber sind - in diesem Fall in "small/".
Die mittleren und großen werden dann in die anderen Ordner verschoben.
Der "head -n 1" Befehl liefert die erste Zeile aus einer Textdatei, in der bei XYZ-Dateien die Atomzahl steht.
Und nun zum wichtigsten, der Befehl:
head -n 1 small/* | gawk 'NR%3 == 1 {srcfile=$2} NR%3 == 2 {if($1 >= 10 && $1 <= 40){split(srcfile, thefile, "/");printf("mv %s %s\n", srcfile, "medium/"thefile[2]) | "bash"}else if($1 > 40){printf("mv %s %s\n", srcfile, "large/"thefile[2]) | "bash"}}'
Anscheinend hat gawk keine eigene Datei-Verschiebungsfunktion, daher gibts noch einmal die "intra-Pipes", zur bash-Shell.

Keine Kommentare:

Kommentar veröffentlichen