PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : #!/bin/bash Teil einer Zeile ausschneiden



Prim
12-09-2007, 09:45
Hallo,
hab ein Problem und ich find keine Lösung!
Folgendes ich möchte aus einem File einen Teil (Zahlen) einer Zeile ausschneiden, nur ist dieser Teil nicht bei jeder Zeile gleich lang, d.h. die Länge variiert.
Das File ist so aufgebaut:

#123456 # Text
12345678951 # Text
#123456789123 # Text
1234 # Text

Hättet ihr ne Idee, wie ich nur die Zahlen ausschneiden kann und nicht die ganze Zeile?

MfG Christoph

jan61
12-09-2007, 18:53
Moin,

was ist das für ein Format? Da sind mal # am Anfang, mal keine, mal Leerzeichen zwischen Zahl und #, mal nicht, ist die auszuschneidende Zahl immer das erste (optional von einem # eingeleitete) Feld? Ist ein wenig unklar und somit sind auch die nachfolgenden Schnipsel eher als Tipp denn als Lösung zu verstehen.


# Variante 1
tr -cd '[:digit:]\n' <datei
# Variante 2
sed -r 's/^#? ?([0-9]+).*$/\1/' datei
# Variante 3
sed 's/^#//;s/#/ /g' datei | cut -f1 -d' '
# Variante 4
sed 's/[^0-9]//g' dateiEs gibt sicher noch tonnenweise mehr Varianten.

Jan

Prim
13-09-2007, 06:44
also, das file ist ein Blacklist file für ein SMS Modem, falls vor den Zahlen (das sind Handynummern) ein "#" steht wird die Handynummer in der Blacklist ignoriert und der User empfängt SMS! Falls also kein "#" steht, wird die Handynummer nicht ignoriert und der User bekommt keine SMS!

Habe es nun mit sed 's/[^0-9]//g' datei gelöst!

MfG Christoph