Moin,
Du kannst die Ranges genauer definieren:
Das Script repair.sed führt nacheinander mehrere Ersetzungen durch, von den Spezialfällen hin zu den allgemeineren. Damit können die nachfolgenden Bedingungen auch unschärfer formuliert werden.Code:jan@jack:~/tmp/wind> cat data 340.12 356.32182.34 350.12 # eindeutig: 5 Stellen trennen nach 2. NK-Stelle 340.34 33.1234.22 12.12 # nicht eindeutig (33.1 234.22 oder 22.12 34.22) -> -9999 340.34 33.1359.99 12.12 # dito (33.13 59.99 oder 33.1 359.99) 340.34 33.1360.00 12.12 # dito (33.13 60.00 oder 33.1 360.00) 340.34 33.1360.01 12.12 # eindeutig: 33.13 60.01 340.34 33.1361.01 12.12 # eindeutig: 33.13 61.01 340.34 33.1400.00 12.12 # eindeutig: 33.14 00.00 jan@jack:~/tmp/wind> cat repair.sed s/ [0-9]*\.[0-9][0-3]60\.0* / -9999 -9999 /g s/ [0-9]*\.[0-9][0-3][0-5][0-9]\.[0-9]* / -9999 -9999 /g s/\(\.[0-9][0-9]\)\([0-9][0-9]\.\)/\1 \2/g s/\(\.[0-9][0-9]\)\([0-9][0-9][0-9]\.\)/\1 \2/g jan@jack:~/tmp/wind> sed -f repair.sed data 340.12 356.32 182.34 350.12 # eindeutig: 5 Stellen trennen nach 2. NK-Stelle 340.34 -9999 -9999 12.12 # nicht eindeutig (33.1 234.22 oder 22.12 34.22) -> -9999 340.34 -9999 -9999 12.12 # dito (33.13 59.99 oder 33.1 359.99) 340.34 -9999 -9999 12.12 # dito (33.13 60.00 oder 33.1 360.00) 340.34 33.13 60.01 12.12 # eindeutig: 33.13 60.01 340.34 33.13 61.01 12.12 # eindeutig: 33.13 61.01 340.34 33.14 00.00 12.12 # eindeutig: 33.14 00.00
Jan
Lesezeichen