ralfkausk
Goto Top

Ksh- werte aus zeilee auslesen

werte aus zeilen auslesen
die zu suchenden werte (e-mail adresse) stehen an unterschiedlichen stellen

Folgendes Problem
Ich habe eine Datei die pro Zeile verschiedenste Werte enthaelt.
Unter anderem auch eine E-Mail Adresse
Dummerweise steht die mail adresse nicht immer an der gleichen position

zeile 1: wert1 wert2 wert3 wert4 wert5 wert6 name@mail.com wert8
zeile 1: wert1 wert2 wert3 wert4 name@mail.com wert6

das haengt damit zusammen das einige Werte fur bestimmte Benutzer nicht zutreffen und daher einfach wegfallen
ich habe auch keinen Einfluss auf die Ursprungsdatei, die muss ich von einem Server runterladen

ich habe schon folgendes probiert, allerdings scheitert es daran das sich die Position des Wertes aendert
cat datei | awk '{print $31}

wer kann helfen?

Content-ID: 135799

Url: https://administrator.de/contentid/135799

Ausgedruckt am: 05.11.2024 um 12:11 Uhr

H41mSh1C0R
H41mSh1C0R 12.02.2010 um 09:37:01 Uhr
Goto Top
folgender Ablauf:

- Lese Zeile ein
- suche das @ Zeichen
- suche das Leerzeichen vor dem @ und nach dem @ Zeichen

Nun musst du nur noch alles was vor dem vorderen Zeichen ist löschen und alles was nach dem hinteren Leerzeichen ist ebenso.

Was übrig bleibt ist die Mailadresse, egal wo sie im String steht.
60730
60730 12.02.2010 um 09:42:40 Uhr
Goto Top
auch dir ein Moin,

@h41:

doch besser so herum?

lese in jeder zeile jeden von einem Leerzeichen getrennten Buchstabensalat ein - wenn der Salat ein @hat, dann den Wert in eine neue Datei schreiben.
H41mSh1C0R
H41mSh1C0R 12.02.2010 um 09:45:08 Uhr
Goto Top
=) wieder zu kompliziert gedacht ^^.
TsukiSan
TsukiSan 12.02.2010 um 16:42:24 Uhr
Goto Top
als mal ein kleines Beispiel in VBS anhand deiner 2 Zeilen:
Zeile1 = "wert1 wert2 wert3 wert4 wert5 wert6 name1@mail.com wert8"  
Zeile2 = "wert1 wert2 wert3 wert4 name2@mail.com wert6"  

Temp = Split(Zeile1 , " " )  
for i = 0 to Ubound(Temp)
	if Instr(1,Temp(i), "@") > 0 then   
		Wscript.Echo Temp(i)
	End If
Next
Temp = Split(Zeile2 , " " )  
for i = 0 to Ubound(Temp)
	if Instr(1,Temp(i), "@") > 0 then   
		Wscript.Echo Temp(i)
	End If
Next

Falls deine Originaldatei im Textformat vorliegt, dann lies diese zeilenweise aus, wie meine Vorredner schon angedeutet haben und werte eventuell jede Zeile so aus.

Gruss
Tsuki