Vereth
Erfahrenes Mitglied
Der Fehler ist, dass du nicht den AWK verwendest.
Das komplette AWK-Skript namens mw.awk, das dein Problem löst:
Die Dateinamen für die auszulesenden Dateien befinden sich in einer Datei, deren Name als Parameter übergeben wurde; bei mir hieß sie files.txt. Als letzte Zeile in dieser Datei muss der String "---END---" stehen; dieser startet die eigentliche Verarbeitung.
$0 ist die Variable für die ganze Zeile, $1 ist das erste Feld in der Zeile, $2 das zweite usw. Wie bei argv[] in C.
Die Daten werden durch Separatoren getrennt die in der Variablen FS definiert werden können; bei mir zu Testzwecken war es der Doppelpunkt ':'.
Die eingelesenen Werte werden in die Datei "fileout.txt" geschrieben, aufsummiert und am Ende der Bearbeitung ausgegeben; als Anzahl, Summe und Mittelwert.
Der Aufruf erfolgt über die Kommandozeile:
gawk -f mw.awk files.txt
Den gawk findest du unter http://www.gnu.org/software/gawk/
Viel
Vergnügen
Vereth
Das komplette AWK-Skript namens mw.awk, das dein Problem löst:
Code:
BEGIN { fcnt = 0; sum = 0; cnt = 0; }
/---END---/{
FS=":";
for ( i = 0; i < fcnt; i++ )
{
for ( j = 0; getline < fname[i] != -1; j++ )
{
if ( j < 14 ) continue;
if ( j == 26 ) break;
print $2 >"fileout.txt";
sum += $2;
cnt++;
}
}
exit;
}
{ fname[fcnt++] = $1; print $1; next; }
END { if ( cnt > 0 ) printf("Anzahl: %d\nSumme: %d\nMittelwert: %d",cnt,sum,sum/cnt); }
Die Dateinamen für die auszulesenden Dateien befinden sich in einer Datei, deren Name als Parameter übergeben wurde; bei mir hieß sie files.txt. Als letzte Zeile in dieser Datei muss der String "---END---" stehen; dieser startet die eigentliche Verarbeitung.
$0 ist die Variable für die ganze Zeile, $1 ist das erste Feld in der Zeile, $2 das zweite usw. Wie bei argv[] in C.
Die Daten werden durch Separatoren getrennt die in der Variablen FS definiert werden können; bei mir zu Testzwecken war es der Doppelpunkt ':'.
Die eingelesenen Werte werden in die Datei "fileout.txt" geschrieben, aufsummiert und am Ende der Bearbeitung ausgegeben; als Anzahl, Summe und Mittelwert.
Der Aufruf erfolgt über die Kommandozeile:
gawk -f mw.awk files.txt
Den gawk findest du unter http://www.gnu.org/software/gawk/
Viel
Vergnügen
Vereth
Zuletzt bearbeitet: