Newbie sucht Hilfe: Zahl aus Datei mit grep/cut/sed lesen und schreiben?

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von rainbow66, 08.09.2009.

  1. #1 rainbow66, 08.09.2009
    Zuletzt von einem Moderator bearbeitet: 08.09.2009
    rainbow66

    rainbow66 Grünschnabel

    Dabei seit:
    08.09.2009
    Beiträge:
    6
    Zustimmungen:
    0
    Guten Abend zusammen!

    Ich hoffe, daß ich hier unter diesem Thema richtig bin. Von Linux habe ich gar keine Ahnung, ich verwende Windows XP.:O Aber nun bin ich mit ein paar Linux Dateien in Berührung gekommen und habe gar keinen Plan. Ich hoffe, mir hilft trotzdem jemand bei meinem Problem.

    Also, ich möchte einen Reconnect-Script via Batchdatei ausführen. Dazu muß ich eine Variable auslesen und weiter verarbeiten. Ich habe mir die Windowsversionen von curl.exe, cut.exe, grep.exe und sed.exe besorgt und knoble nun schon einige Tage ohne Erfolg daran.

    Und das möchte ich erreichen: In der Datei Test.txt (habe ich mit grep aus einer anderen Datei herausgefiltert und in Test.txt gespeichert) ist folgende Zeile enthalten:
    <INPUT type=hidden name=tk value="1234567890">

    Ich brauche nun den Wert 1234567890 und möchte diesen per Set=1234567890 definieren um ihn weiter verwenden zu können. Also habe ich versucht diesen aus zu lesen: cut -d """ -f 2 test.txt

    Damit bekomme ich 1234567890 auf dem Bildschirm angezeigt. Habe dann versucht, diesen Wert in eine weitere Textdatei zu schreiben: cut -d """ -f 2 test.txt > ergebnis.txt

    Dann kommt aber von cut eine Fehlermeldung. So wie ich es verstehe kann ich mit cut nur lesen, aber das Ergebnis nicht schreiben. Geht das dann mit sed irgendwie?

    Bitte nicht lachen, für euch ist das sicher eine ganz klare Sache, für mich bis jetzt nicht zu durchschauen...:hilfe2:

    Ich wäre wirklich für Hilfe dankbar!

    Grüße,
    rainbow66

    Edit: Nun bin ich durch voriges Suchen doch im falschen Bereich gelandet! Sorry! Mod, bitte verschieben!! (erledigt, defcon)
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 bb83, 08.09.2009
    Zuletzt bearbeitet: 08.09.2009
    bb83

    bb83 Frickler

    Dabei seit:
    16.12.2008
    Beiträge:
    86
    Zustimmungen:
    0
    Also dein cut funktioniert bei mir hier nicht wirklich.

    Hier mal eine von vielen Möglichkeiten:
    Edit:
    Hier nochmal nur mit grep
     
  4. #3 rainbow66, 08.09.2009
    rainbow66

    rainbow66 Grünschnabel

    Dabei seit:
    08.09.2009
    Beiträge:
    6
    Zustimmungen:
    0
    Danke für Deine Antwort. Habe mir auch noch awk für Windows besorgt. Aber wie gebe ich das in der DOS-Shell ein? Ich bekomme so lauter Fehlermeldungen.

    Bei Grep, kommt die Fehlermeldung, daß der -o Schalter nicht bekannt ist. Vermutlich unterscheiden sich die Windowsversionen bzgl. der Syntax etwas von den Linuxversionen.

    Vielleicht ist noch wichtig, daß sich die Variable (in meinem Beispiel die Zahl 1234567890) jedes mal verändert. Ich denke aber, die Anzahl der Stellen bleibt gleich.
     
  5. #4 slackfan, 09.09.2009
    slackfan

    slackfan König

    Dabei seit:
    18.04.2006
    Beiträge:
    809
    Zustimmungen:
    0
    Ort:
    Bonn
    Wo hast du die Dateien heruntergeladen?
     
  6. #5 rainbow66, 09.09.2009
    Zuletzt bearbeitet: 09.09.2009
    rainbow66

    rainbow66 Grünschnabel

    Dabei seit:
    08.09.2009
    Beiträge:
    6
    Zustimmungen:
    0
    hier:
    http://gnuwin32.sourceforge.net/packages/gawk.htm ---> Version 3.1.6.2962
    http://gnuwin32.sourceforge.net/packages/sed.htm ---> Version 4.2
    Grep (Ver. 2.4.2) und Cut (Ver. 2.0) waren bei Curl dabei.

    bei Eingabe von:
    Code:
    awk -F"=" test.txt "{print $4}" | sed "s/"\>"/""/g" 
    kommt die Fehlermeldung "Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch"

    Es ist doch richtig, daß ich unter Windows aus einfachen Anführungszeichen (') doppelte (") machen muß???
     
  7. #6 slackfan, 09.09.2009
    Zuletzt bearbeitet: 09.09.2009
    slackfan

    slackfan König

    Dabei seit:
    18.04.2006
    Beiträge:
    809
    Zustimmungen:
    0
    Ort:
    Bonn
    Also wenn ich das grep von selbiger Website benutze, funktioniert,
    Code:
    for /f "delims=" %a in ('grep -oe "[0-9]*" test.txt') do @set NUMMER=%a
    echo %NUMMER%
    
    Batch ist so eine Grütze. Wenn ich müsste, würde ich PowerShell lernen. Irgendeine .Net-Anwendung läuft sowieso meistens. Falls jemand wegen des Overheads meckern will ;)

    cu
     
  8. defcon

    defcon Kaiser
    Moderator

    Dabei seit:
    22.08.2005
    Beiträge:
    1.486
    Zustimmungen:
    1
    Ort:
    Bruchsal
    Wieso DOS-Shell? Versuchst du etwa den ganzen Kram mit cut usw. etwa in der Windows CMD einzugeben?
     
  9. #8 rainbow66, 09.09.2009
    rainbow66

    rainbow66 Grünschnabel

    Dabei seit:
    08.09.2009
    Beiträge:
    6
    Zustimmungen:
    0
    @slackfan

    meine Batchdatei schaut so aus:
    Code:
    del %TEMP%\tk.txt
    curl http://192.168.1.1//cgi-bin/admin?page=x -d "AdminPassword=ppp&next=10&page=x" -s | grep "tk value=" > %temp%\tk.txt
    
    for /f ""delims="" %a in ("grep -oe ""[0-9]*""%temp%\tk.txt") do @set tk=%a
    echo %tk%
    Ich erhalte folgende Fehlermeldung:
    Code:
    """" ist syntaktisch an dieser Stelle nicht verarbeitbar
    Habe auch mit den " experimentiert, weil mir immer noch nicht klar ist, wie das bei Windows zu verwenden ist ( ' wird zu " und " wird zu "")???

    @defcon
    Eine Batchdatei wird doch unter Windows wie in einem DOS-Fenster (CMD) ausgeführt, oder? Bevor ich etwas in die Batchdatei übernehme, teste ich den Befehl im DOS-Fenster, ob er klappt. Ist das falsch?

    Nicht das ihr denkt, ich bin zu faul zum suchen. Ich probiere, lese, suche, probiere wieder..... seit einer Woche. Mir fehlen halt die Grundlagen.
    Hätte auch nicht gedacht, daß es so eine Aktion ist aus einer Textdatei einen Wert heraus zu lesen und dann als Variable weiter zu verarbeiten.

    Auf jeden Fall bedanke ich mich vielmals bei jedem, der seine Zeit opfert und mir hier hilft!!!

    Grüße,
    rainbow66
     
  10. #9 slackfan, 09.09.2009
    slackfan

    slackfan König

    Dabei seit:
    18.04.2006
    Beiträge:
    809
    Zustimmungen:
    0
    Ort:
    Bonn
    Hallo,

    Code:
    echo OFF
    for /f "delims=" %%a in ('grep -oe "[0-9]{8,11}"%temp%\tk.txt') do @set TK=%%a
    echo %TK%
    
    du musst den Unterschied zwischen doppelten und einfachen Hochkommata beachten.
    Lass die einfach, wie sie sind.
    Zudem hatte ich vergessen, dass die Syntax in Cmd-Dateien eine leicht andere ist, als in der Eingabeaufforderung. Da muss das %-Zeichen vor dem Platzhalter a verdoppelt werden.
    Noch so ein unschöner Umstand. Deswegen ist es eher sinnvoll die Befehle via Editor in eine Cmd-Datei zu schreiben und parallel über die Eingabeaufforderung aufzurufen.

    Nenn das bitte nicht Dos-Fenster :) Auf NT-basierten Betriebssystemen sieht das nur noch aus wie DOS, ist aber keines mehr. Das wird nur noch emuliert.


    cu
     
  11. #10 rainbow66, 09.09.2009
    rainbow66

    rainbow66 Grünschnabel

    Dabei seit:
    08.09.2009
    Beiträge:
    6
    Zustimmungen:
    0
    ok, kein DOS mehr, versprochen!:D

    Habe es jetzt genau so gemacht, wie Du geschrieben hast und die Datei ausgeführt. TK wird aber nicht gesetzt. Fehlermeldung:
    Code:
    grep: (standard input): Not enough space
    Wenn ich "mem" ausführe kommt folgendes:
    Hat das was damit zu tun?
     
  12. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  13. #11 slackfan, 09.09.2009
    Zuletzt bearbeitet: 09.09.2009
    slackfan

    slackfan König

    Dabei seit:
    18.04.2006
    Beiträge:
    809
    Zustimmungen:
    0
    Ort:
    Bonn
    Hier erschöpft sich mein Wissen. Ist ja auch ein Linux-/Unixforum ;)
    Handelt es sich jetzt um das grep des gnuwin32 Projektes?
    Bei mir tut es (XP SP3). Du könntest noch egrep probieren, fall der reguläre Ausdruck für grep zu komplex ist. (Einfach das e voranstellen. Der Aufruf ist identisch.)
     
  14. #12 rainbow66, 10.09.2009
    rainbow66

    rainbow66 Grünschnabel

    Dabei seit:
    08.09.2009
    Beiträge:
    6
    Zustimmungen:
    0
    Ist mir auch nicht klar, warum es bei mir nicht klappt. Ich habe mich jetzt nach einer anderen Lösung bemüht und diese mit Autoit auch gefunden. Damit war das Problem in 10 min gelöst.

    Nochmals vielen Dank füe Deine Bemühungen!:)

    Grüße,
    rainbow66
     
Thema: Newbie sucht Hilfe: Zahl aus Datei mit grep/cut/sed lesen und schreiben?
Besucher kamen mit folgenden Suchen
  1. windows grep: (standard input): Not enough space

Die Seite wird geladen...

Newbie sucht Hilfe: Zahl aus Datei mit grep/cut/sed lesen und schreiben? - Ähnliche Themen

  1. Newbie here!!! Graphische Oberfläche und Grundkenntnisse gesucht

    Newbie here!!! Graphische Oberfläche und Grundkenntnisse gesucht: Hiho kurzes Vorwort: Ich habe mir einfach mal in den Kopf gesetzt einen Server unter Linux aufzumachen. Dieser Server sollte MySQL und Java...
  2. Newbie sucht Live-Unterstützung bei PHP-Update

    Newbie sucht Live-Unterstützung bei PHP-Update: Hallo zusammen, ich bin relativ neu im Linux-Sektor, möchte aber mölichst bald auf meinem Server von PHP4 auf PHP5 umsteigen. Dafür suche ich noch...
  3. Newbie:apache2/befehl htdigest Problem

    Newbie:apache2/befehl htdigest Problem: Hallo Leute, ich habe ein Problem mit diesem Befehl: htdigest -c /etc/apache2/passwords xxxxx xxxxx xxxx= usernamen sollen eingefügt werden...
  4. Unixboard - richtig für Linux-Newbies?

    Unixboard - richtig für Linux-Newbies?: Hallo Community, Wenn ich hier im Portal den zeitlichen Verlauf der Posts betrachte, fällt mir auf, dass trotz enormer Besucherfrequenz relativ...
  5. CentOS Newbie openOffice Installation geht nicht!

    CentOS Newbie openOffice Installation geht nicht!: Hallo Leute, bin echt ratlos und habe ne Menge probiert - bin total neu in der Linuxwelt und ich hoffe ihr könnt mir ein wenig Helfen! Nun...