Anzeige:
Ergebnis 1 bis 15 von 15

Thema: bestimmten Text suchen + ausgeben

  1. #1
    Gast

    Question bestimmten Text suchen + ausgeben

    hi!

    Ich bräuchte ein Script, welches mir aus einer HTML Datei einen bestimmten String(heißt das so? ich glaube schon ) sucht und dann die nächsten fünf Zeichen in eine Datei schreibt.
    das Script sollte möglichst auch mehrere vorher festgelegte Dateien so bearbeiten.

    CU Till

  2. #2
    Gast

    Post

    aufruf: name.pl suchstring datei1 datei2 >zieldatei

    Beliebig viele dateien möglich

    Code:
    #!/usr/bin/perl
    
    if(@ARGV<2){
    	print "\nUSAGE: $0 SUCHSTRING DATEI1 DATEI2 > ZIELDATEI\n";
    }
    
    for($i=1;$i<=$#ARGV;$i++){
    		#bei einmaligem vorkommen
    		$tmp=`cat $ARGV[$i]`;
    		print "$2\n" if $tmp=~/($ARGV[0])(.{5})/g;
    		#
    		# wenn in mehreren zeilen vorkommend 
    		#@tmp=`cat $ARGV[$i]`+;
    		#for(@tmp){
    		#	print "$2\n" if /($ARGV[0])(.{5})/;
    		#}
    }

  3. #3
    Gast

    Post

    hi lolli!

    erstmal total vielen dank, dass du so schnell geantowrtet hast, aber da ich nur ein ganzkleinwenig C kann, verstehe ich dein Script leider nciht.
    könntest du mir mal sagen wo ich was eintragen muss, und wie das Script funktioniert? wäre echt nett!

    CU Till

  4. #4
    Gast

    Post

    hallo Hotnine,
    eintragen brauchs du eigentlich nichts:
    ei nfach alles zwischen den linien markieren :-) und in eine datei kopieren, abspeichern (z.b. name.pl) und rechte ändern (chmod 755 name.pl)

    aufruf: ./name.pl SUCHZEICHEN datei1.htm datei2.htm > ausgabe.txt

    SUCHZEICHEN ist dein string, nach welchem die 5 zeichen gesichert werden sollen

    ausgabe.txt wird neu erstellt (oder ÜBERSCHRIEBEN wenn bereits vorhanden), mit den jeweils 5 zeichen aus allen dateien (wenn sie vorhanden waren), die du angegeben hast


    wie gesagt, du kannst beliebig viele dateien angeben

    bsp:

    ./name.pl test datei1.htm > ergebnis.txt


    wenn in datei datei1.htm das wort test vorhanden ist, werden die darauf folgenden 5 zeichen in der datei ergebnis.txt gespeichert

    zum testen kannst du das > ergebnis,txt weglasen, dann werden die treffer am bildschirm ausgegeben.

    olli

    hoffe, es hilft; ist übrigens in PERL "verfasst"

  5. #5
    Gast

    Post

    hi!

    also habe das jetzt mal getestet, und da bekomme ich leider nen fehler:

    ./search.pl: line 1: syntax error near unexpected token `if(@ARGV<2){'
    ./search.pl: line 1: `if(@ARGV<2){'


    und dann wollte ich noch Fragen, ob es auch geht, das ich die Dateien und den Suchstring statisch in das Script einbinde?

    CU Till

    [Dieser Beitrag wurde von Hotnine am 22. M&auml;rz 2001 editiert.]

  6. #6
    Gast

    Post

    versuch mal perl name.pl ...

    das mit den statischen dateien kommt gleich
    was fuer ein systen nutzt du denn?

    olli

    in ca. 10 min

    [Dieser Beitrag wurde von lolli am 22. M&auml;rz 2001 editiert.]

  7. #7
    Gast

    Post

    hi!

    also wenn ich Perl davor schreibe, dann klappt's. und bei solchen schnellen Antworten freut man sich!! nochmal Danke!
    ich benutze SuSE 7.0

    CU Till, bis gleich

    [Dieser Beitrag wurde von Hotnine am 22. M&auml;rz 2001 editiert.]

  8. #8
    Gast

    Post

    sollte eigentlich gehen. hinweis: die untere variante klappt nur dann fehlerfrei, wenn pro datei nur ein treffer zu finden ist.
    Code:
    #!/usr/bin/perl
    
    # die datei mit den neuen ergebnissen
    	$zFile="ergebnis.txt";
    # die dateien, die durchsucht erden sollen
    	@files=("test.txt","datei1.htm","datei2.htm","datei3.htm"); #usw.
    # der startstring
    $sstr="hier dein startwort/startzeichen";
    
    open(TG,">$zFile") &#0124;&#0124; die($!);
    foreach $f(@files){
    		# nächste datei, da aktuelle nicht vorhanden ist
    		if( ! -e $f) {; 
    			print "ERROR: $f not found...\n";
    			next;
    		}
    		#bei einmaligem vorkommen sonst auskommentieren
    		$tmp=`cat $f`;
    		print TG "$2\n" if $tmp=~/($sstr)(.{5})/g;
    		#
    		# wenn in mehreren zeilen vorkommend 
    		#@tmp=`cat $f`;
    		#for(@tmp){
    		#	print TG "$2\n" if /($sstr)(.{5})/;
    		#}
    } 
    close(TG);
    exit;

    olli

  9. #9
    Gast

    Post

    hi!

    vielen dank, für das Script Iollo. es läuft und macht seinen Dienst genau so wie ich mir's vorgestellt habe!
    Danke nochmal

    CU Till

  10. #10
    Gast

    Post

    hi!

    ich bins nochmal, was muss ich bei dem Suchstring angeben, wenn er meinetwegen nach:

    <STRONG>TDblabla/TD
    TD</STRONG>

    den Wert ausgeben soll?
    CU Till

    [Dieser Beitrag wurde von Hotnine am 23. M&auml;rz 2001 editiert.]

  11. #11
    Gast

    Post

    "TDblabla/TD\nTD"

    \n steht für nen zeilenumbruch (unix)

    olli

    [Dieser Beitrag wurde von lolli am 23. M&auml;rz 2001 editiert.]

  12. #12
    Gast

    Post

    hi!

    du musst ja ständig auf der Lauer liegen danke das du so schnell antwortest!
    also das will irgendwie nicht so recht funktionieren.
    also da ich denke, dass wir schneller zu der Lösung kommen wenn ich dir mein Problem mal schildere, werde ich das mal tun.
    ich will aus der datei <A Href="http://informer2.comdirect.de/de/detail/_pages/charts/main.html?sSymbol=SAP.FSE">http://informer2.comdirect.de/de/detail/_pages/charts/main.html?sSymbol=SAP.FSE</A> den Betrag nach <STRONG>Letzter Schlußwert</STRONG> aber das Progi gibt mir da ein Error aus.
    ich hatte versucht die datei auf der Platte zu speichern, und dann den Wert rauszuziehen aber das funktioniert auch nicht so recht.
    wenn man Lynx dazu bewegen würde die Datei(und dann noch einige ähnliche auch) an das Progi weiter zu leiten, müsste es klappen.
    Oder das Progi schafft es selber!?
    naja, ich weiß nciht so recht, hatte mir das einfacher vorgestellt.
    ich will dir ja auch nicht deinen ganzen Tag rauben.

    CU Till


    [Dieser Beitrag wurde von Hotnine am 23. M&auml;rz 2001 editiert.]

  13. #13
    Gast

    Post

    ich schau mir das mal an...

    ich hatte mal ein ähnliches problem...ich schau mal nach ob ichs noch finde....sollte aber nicht so schwer sein.

    olli


    wird wohl etwas dauern (gegen abend...)


  14. #14
    Gast

    Post

    ok. habs etwas geändert. lauft jetzt mit lynx (textbrowser) und holt die dateien DIREKT aus dem netz. hoffe du hast lynx bzw. kannst drauf zu greifen. ansonsten kann ich die alternativ das ganze auch als php-skipt schicken. brauchst du dann nur ins netz/auf deinen lokalen server packen und aufrufen -> aktuelle daten

    Code:
    #!/usr/bin/perl
    # die datei mit den neuen ergebnissen
    $zFile="ergebnis.txt";
    # die dateien, die durchsucht erden sollen
    @files=("http://informer2.comdirect.de/de/detail/_pages/charts/main.html?sSymbol=SAP.FSE"); ,"URL2","URL2",...#usw.
    # der startstring
    $sstr="Letzter Schlußkurs";
    
    open(TG,">$zFile") &#0124;&#0124; die($!);
    foreach $f(@files){
    		$tmp=`lynx -dump $f`;
    		$stock=$1 if $tmp=~/Symbol (.+)[\n\r]/gi;
    		$val=$1 if $tmp=~/$sstr (.+)[\n\r]/gi;
    		# Ausgabe am bildschirm
    		print "$stock: $val\n";# if $val && $stock;
    		#ausgabe datei
    		print TG "$val\n";
    		undef($stock);
    		undef($val);
    } 
    close(TG);
    exit;
    olli

  15. #15
    Gast

    Post

    hi!

    total geil! jetzt klappts wirklich wie
    ich's mir gedacht habe!! vielen Dank!
    Das Script erleichtert mir die Arbeit jetzt um einiges

    CU Till

    [Dieser Beitrag wurde von Hotnine am 23. M&auml;rz 2001 editiert.]

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •