PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : wie filter ich Name raus



stratos
17-05-2001, 19:46
Hallo Leute
ich soll mit der bash den Namen aus folgen-
den String rausfiltern:
From: Tom Wurtner <tom@wurtner.de>
es könnte auch ein kürzerer Name dastehen
es geht wohl mit "cut" oder "sed"
ich weiss aber die Parameter nicht.
vielleicht brauch man auch eine Pipe
bitte helft mir ich sitzt schon seit
Stunden.

Hans-Georg Normann
17-05-2001, 20:42
Hi Stratos

Ich sage nicht, daß ich weiß wie es geht. Schau doch mal unter man mail nach, was die Option -f hergibt.

Ich sehe nämlich die Schwierigkeit, daß nicht in allen Mails From: steht. Könnte ja auch sein dass da von: oder sonst eine Sprache steht. (Oder weiß jemand, ob es eine Norm für Mailheader gibt und ob auch M$ sich daran hält?)

Vielleicht hilft dir meine Anregung ja weiter.

Hans

stratos
17-05-2001, 23:29
cut -f
in der man steht das für fields hast du ein beispielprogramm damit ich sehe wie es benutzt wird aus der manpage werde ich nicht so richtig schlau was ist ein delimeter

thommy
18-05-2001, 08:03
Viele Wege führen nach Rom:

Mit 'sed':

<pre>
user@sonne&gt; Zeile="From: Tom Wurtner"
user@sonne&gt; echo $Zeile | sed 's/From: \(.*\)/\1/g'
Tom Wurtner
</pre>

Mit 'cut':
<pre>
user@sonne&gt; echo $Zeile | cut -d " " -f 2-
Tom Wurtner
</pre>

[Delimiter ist ein Trennzeichen, im Beispiel das Leerzeichen (-d " ")]

Ein 'Umweg':

<pre>
user@sonne&gt; set $Zeile ; shift; echo $@
Tom Wurtner
</pre>

Ich denke, das ist fürs erste genug. Auch wenn mir weitere Möglichkeiten einfallen ('awk' wäre auch schick)

Thomas

Manfred-B
18-05-2001, 22:59
Hallo
Also ein 'delimeter' ist ein Spaltentrenner; hier ein Zeichen welches die einzelnen Spalten voneinander trennt.
Man kann aber auch diese Aufgabe erledigen ohne ein externes progamm zu benutzen - mit der Bash - "Parameter Expansion"
<pre>
Zeile="From: Tom Wurtner"
echo ${Zeile/From: /}
Tom Wurtner
</pre>
hier wird in $Zeile das Muster "From: " durch den leeren Sting ersetzt (gelöscht).
Also kann man auch "From: " durch "To: " ersetzen oder sonstwas:
<pre>
echo ${Zeile/From: /To: }
To: Tom Wurtner
</pre>
Dann kann man auch noch festlegen, daß "From: " am Anfang des Strings stehen muß:
echo ${Zeile/#From: /}


Wieviele Wege führen zum Ziel?
Einen Haken hat das aber: Enthält $Zeile nicht "From: " wird der ganze String unverändert geliefert. Das kann man aber auch mit der Bash abfangen:
if test -z "${zeile%From: *}" ; then echo "ist From: ..."; fi

OK sed ist vieleicht doch einfacher
Manfred-B :rolleyes:

stratos
19-05-2001, 17:53
hallo
vielen dank von euch für die nützlichen infos
sie haben mich wirklich berreichert

stratos