Page 1 of 1

wie extrahiere ich bestimmte textteile aus einer datei?

Posted: 2003-05-31 11:59
by headstartforhappiness
also, ich habe eine datei, in der völlig ungeordnet und inmitten anderer dinge (mit leerzeichen oder tabulator getrennt) immer wieder was in der art "beliebiglangertext@localhost" drinsteht. nun würde ich gerne alles links vom @ bis zum vorhergehenden leerzeichen plus das "@localhost" hintendran in eine neue datei, und zwar mit einem eintrag pro zeile und strichpunkt dahinter, schreiben.

aus:

abc blabla xyz test@localhost a@localhost cce

sollte quasi

test@localhost;
a@localhost;

werden.

wie stelle ich das an? mit welchen programmen kann ich das machen?

headstart

Re: wie extrahiere ich bestimmte textteile aus einer datei?

Posted: 2003-05-31 13:44
by majortermi
man grep
und vielleicht auch
man awk

Re: wie extrahiere ich bestimmte textteile aus einer datei?

Posted: 2003-05-31 13:50
by deanwickert
Also ich würde da schnell nen PHP-Script zusammenschrauben.

Code: Select all

<?php
  $datei = "dateiname.txt";
  $fp = fopen ($datei, "r");
  $filesize = filesize ($datei);
  $textfile = fread ($fp, $filesize);
  $help = explode (" ", $textfile);
  for ($n=0; $n<count($help); $n++) {
    if (eregi (".{1,}@localhost", $help[$n])) {
      $outputfile = "dateiausgabe.txt";
      $open = fopen ($outputfile, "a");
      fwrite ($open, "$help[$n];n");
      fclose ($open);
    }
  }
?>
Habs nicht getestet, also keine Garantie, dass es läuft. Aber vom Prinzip her sollte es gehen.

Re: wie extrahiere ich bestimmte textteile aus einer datei?

Posted: 2003-05-31 16:26
by captaincrunch
Da kommen die PHPler wieder aus den Löchern hervorgekrochen ... und das, wo es mit einem Shell-Einzeiler getan gewesen wäre ... ;)

Re: wie extrahiere ich bestimmte textteile aus einer datei?

Posted: 2003-05-31 17:27
by olaf.dietsche
headstartforhappiness wrote:also, ich habe eine datei, in der völlig ungeordnet und inmitten anderer dinge (mit leerzeichen oder tabulator getrennt) immer wieder was in der art "beliebiglangertext@localhost" drinsteht. nun würde ich gerne alles links vom @ bis zum vorhergehenden leerzeichen plus das "@localhost" hintendran in eine neue datei, und zwar mit einem eintrag pro zeile und strichpunkt dahinter, schreiben.

aus:

abc blabla xyz test@localhost a@localhost cce

sollte quasi

test@localhost;
a@localhost;

werden.

wie stelle ich das an? mit welchen programmen kann ich das machen?

headstart
So oder so ähnlich sollte es gehen:

Code: Select all

tr -s '[:space:]' 'n' <datei | grep @ | sed -e 's/$/;/'

Re: wie extrahiere ich bestimmte textteile aus einer datei?

Posted: 2003-06-06 12:46
by deanwickert
CaptainCrunch wrote:Da kommen die PHPler wieder aus den Löchern hervorgekrochen ... und das, wo es mit einem Shell-Einzeiler getan gewesen wäre ... ;)
Dann eben:

Code: Select all

<?php
  echo shell_exec ("tr -s '[:space:]' 'n' <datei | grep @ | sed -e 's/$/;/'");
?>
Bitte nicht schlagen! :wink:

Re: wie extrahiere ich bestimmte textteile aus einer datei?

Posted: 2003-06-11 15:05
by headstartforhappiness
heeyy :-), vielen dank für eure antworten! ich hätte nie gedacht, dass soviel und so aufwendig geholfen wird. ich werd damit was zusammenbasteln können, also DANKE nochmal!
headstart