Eine praktische Übung

Das folgende entspricht der „Hausaufgabe 10: Abschlussübung Grundlagenteil“ auf replit.com

Ein Verzeichnis enthält einen Satz durchnummerierte Textdateien. Der Inhalt dieser Dateien hat jeweils die gleiche Form: jede Zeile enthält zwei Zahlen, eine Wellenzahl und einen zugehörigen Absorptionswert. Die Wellenzahlen sind in allen Dateien dieselben, und die Dateien haben die gleiche Zeilenanzahl. (Verwenden Sie diesen Beispieldatensatz mit zehn Dateien.)

3998.76332	0.00110
3927.95115	0.00085
3857.13898	0.00061
3786.32681	0.00048
3715.51464	-0.00012
3644.70247	-0.00397
3573.89029	-0.00014
3503.07812	0.00115
3432.26595	-0.00556
3361.45378	-0.02024
3290.64161	-0.01333
3219.82944	-0.02691
3149.01727	-0.02251
3078.20509	0.00843
3007.39292	0.02401
2936.58075	0.05253
2865.76858	0.03304
2794.95641	0.01666
2724.14424	0.01121
2653.33207	0.00891
2582.51989	0.00670
2511.70772	0.00500
2440.89555	0.00348
2370.08338	0.00269
2299.27121	0.00231
2228.45904	0.00202
2157.64686	0.00155
2086.83469	0.00129
2016.02252	0.00082
1945.21035	0.00070
1874.39818	0.00059
1803.58601	0.00015
1732.77384	0.00104
1661.96166	0.11621
1591.14949	0.08015
1520.33732	0.14534
1449.52515	0.07174
1378.71298	0.06616
1307.90081	0.07216
1237.08864	0.06333
1166.27646	0.05060
1095.46429	0.04957
1024.65212	0.03576
953.83995	0.02671
883.02778	0.02759
812.21561	0.03687
  • Schreiben Sie ein Skript, das nun die Absorptionswerte für jede Wellenzahl in eine Datei data.out zusammenfasst. Bonus: Übernehmen sie einmal die Wellenzahlen ebenfalls in die Ausgabedatei, jeweils am Anfang jeder Zeile.

    Beispielausgabe:

    3998.76332	0.00110	0.00098	0.00114	0.00131	0.00131	0.00165	0.00166	0.00153	0.00178	0.00171	0.00174
    3998.05520	0.00108	0.00093	0.00123	0.00140	0.00127	0.00157	0.00162	0.00151	0.00166	0.00166	0.00182
    3997.34708	0.00104	0.00095	0.00133	0.00143	0.00128	0.00150	0.00160	0.00156	0.00155	0.00161	0.00187
    3996.63896	0.00097	0.00101	0.00135	0.00139	0.00137	0.00148	0.00161	0.00161	0.00154	0.00161	0.00188
    3995.93084	0.00090	0.00105	0.00130	0.00132	0.00146	0.00149	0.00159	0.00162	0.00160	0.00164	0.00186
    3995.22271	0.00088	0.00108	0.00125	0.00128	0.00151	0.00149	0.00155	0.00162	0.00167	0.00169	0.00184
    3994.51459	0.00091	0.00113	0.00123	0.00127	0.00150	0.00148	0.00153	0.00162	0.00170	0.00177	0.00183
    3993.80647	0.00094	0.00117	0.00124	0.00128	0.00149	0.00147	0.00153	0.00162	0.00169	0.00184	0.00181
    3993.09835	0.00090	0.00117	0.00120	0.00125	0.00148	0.00148	0.00151	0.00158	0.00165	0.00186	0.00176
    .
    .
    .
    . usw.
    
  • Zusätzlich soll die Datei header.out einen Tabellenkopf mit den fortlaufenden Dateinummern enthalten. Im Beispiel sieht das so aus:

    0000	0001	0002	0003	0004	0005	0006	0007	0008	0009	0010	
    
  • Bonus: Erweitern sie das Skript um die folgende Funktionalität:

    Zusätzlich zu den Datenfiles soll das Verzeichnis eine Datei wellenzahlen.txt enthalten, die definiert, wie die Ausgabedaten gefiltert werden sollen. In jeder Zeile dieser Datei steht ein Wellenzahl-Intervall, etwa so:

    3998-4005
    804-790
    1550-1555
    1205-1200
    

    Die Ausgabedatei ihres Skripts soll dann nur noch diejenigen Zeilen enthalten, die wenigstens eine dieser Bedingungen erfüllen, d.h. die Messdaten für die Wellenzahlen ausgeben, die innerhalb eines der Intervalle liegen.