Martin Klaiber
2008-01-13 13:56:30 UTC
Ich suche ein grep (oder ähnliches tool), das whitespace ignorieren
kann. Zweck ist die Suche nach Telefonnummern, die Leerzeichen
enthalten können.
Beispiel: die Telefonnummer 1234567 wird oft in einer der folgenden
Formen abgespeichert:
1 23 45 67
123 45 67
12 34 567
Alle sollen gefunden werden. Eine Möglichkeit wäre natürlich, im Text
einfach Leerzeichen innerhalb von Telefonnummer zu verbieten, aber das
schränkt die Lesbarkeit für Menschen ein, scheidet also aus. Auch die
Lösung, eine feste Schreibweise vorzuschreiben, scheitert in der Regel
am Faktor Mensch.
Schön wäre ein grep, das Leerzeichen ignorieren könnte. Ich habe aber
nichts in der Richtung gefunden. Zur Zeit behelfe ich mir damit:
cat telefon.dat | sort | while read zeile; do
echo "$zeile" | sed 's/\ //g' | grep -iq $1 && \
{
echo "$zeile" | ...
...
}
done
Das funktioniert zwar, ist aber ziemlich langsam. Weiß jemand, woran
das liegt, und wie man das verbessern könnte?
TIA, Martin
kann. Zweck ist die Suche nach Telefonnummern, die Leerzeichen
enthalten können.
Beispiel: die Telefonnummer 1234567 wird oft in einer der folgenden
Formen abgespeichert:
1 23 45 67
123 45 67
12 34 567
Alle sollen gefunden werden. Eine Möglichkeit wäre natürlich, im Text
einfach Leerzeichen innerhalb von Telefonnummer zu verbieten, aber das
schränkt die Lesbarkeit für Menschen ein, scheidet also aus. Auch die
Lösung, eine feste Schreibweise vorzuschreiben, scheitert in der Regel
am Faktor Mensch.
Schön wäre ein grep, das Leerzeichen ignorieren könnte. Ich habe aber
nichts in der Richtung gefunden. Zur Zeit behelfe ich mir damit:
cat telefon.dat | sort | while read zeile; do
echo "$zeile" | sed 's/\ //g' | grep -iq $1 && \
{
echo "$zeile" | ...
...
}
done
Das funktioniert zwar, ist aber ziemlich langsam. Weiß jemand, woran
das liegt, und wie man das verbessern könnte?
TIA, Martin