[gelöst] grep - frage zum Suchergebnis

Hinweis: In dem Thema [gelöst] grep - frage zum Suchergebnis gibt es 10 Antworten auf 2 Seiten. Der letzte Beitrag () befindet sich auf der letzten Seite.
  • Hallo,


    ich habe zwei Dateien (alledateien2012-12.05 und all_dokuments), in denen ich nach Mustern suche.
    Die Muster erhält grep aus der Datei suche oder suche.txt (beide Dateien sind inhaltlich identisch, nur die Dateinamen sind verschieden).


    Code
    grep -f suche alledateien2012-12-05.txt all_dokuments|less


    funktioniert tadellos.



    Code
    grep -f suche.txt alledateien2012-12-05.txt all_dokuments|less


    Soll grep die Datei "suche.txt" durchsuchen, dann liefert grep mit -f suche.txt oder -f suche\.txt den gesamten Inhalt der durchsuchten Dateien (und beachtet nicht die Suchmuster in Datei suche.txt).


    1) Warum das?


    2) Wie kann ich das Suchmuster per Eingabeabfrage über die Tastatur übergeben


    Danke für Erklärung


    liebe Grüße
    micca

    wer weiss,
    dass er noch viel mehr wissen kann,
    und nie aufhört Neues zu verstehen,
    ist klar im Vorteil.


    Wer Menschen kennt, die das Geheimnis eignen Glückes praktizieren,
    nämlich anderen zu helfen,
    ist Drinnen.


    Dazu noch Demut und ein glücklich tugendhaftes Leben
    läßt Dich erblühen.

    4 Mal editiert, zuletzt von swissball () aus folgendem Grund: inhaltliche Klarstellung 2. gelöst

    Für den Inhalt des Beitrages 50378 haftet ausdrücklich der jeweilige Autor: swissball

  • Es gibt manpages.
    Lerne, die zu lesen.


    Aus "man grep":
    -f FILE, --file=FILE
    Obtain patterns from FILE, one per line. The empty file contains
    zero patterns, and therefore matches nothing. (-f is specified
    by POSIX.)


    Was steht in deiner "suche" ?
    (Und bitte, bitte, bitte: [zensiert]. LIEFERE solche Infos künftig OHNE Nachfrage schon beim ERSTELLEN!)
    Und wie lautet der Befehl, wenn du "suche.txt" verwendest?


    Deine letzte Frage ist einfach:
    "read" kann von der Tastatur lesen.
    Aber die Frage macht nicht wirklich Sinn: Warum willst du das NACH Aufruf noch einlesen?
    (Machte allenfalls Sinn, wenn man das in einem Script verwenden will. Da nimmt man aber Variablen)



    Bitte sachlich bleiben.

    Sehr geehrter Herr Trekkie00,
    das war doch sachlich fundiert.
    GRINS



    MfG
    Trekkie00

    4 Mal editiert, zuletzt von uhelp ()

    Für den Inhalt des Beitrages 50379 haftet ausdrücklich der jeweilige Autor: uhelp

  • 1) In der Datei "suche.txt" steckt wahrscheinlich eine Leerzeile (gerne am Ende des Textes). Das ist auch ein Muster. ;)


    2):

    Code
    grep "$(read -ep "Muster eingeben: ";echo "$REPLY")" alledateien2012-12-05.txt all_dokuments

    2 Mal editiert, zuletzt von Persephone () aus folgendem Grund: Ändern scheint Spaß zu machen...

    Für den Inhalt des Beitrages 50380 haftet ausdrücklich der jeweilige Autor: Persephone

  • Hallo Persephone,


    die zwei Dateien suche und suche.txt sind bis auf den Namen inhaltlich vollständig übereinstimmend.


    Dachte ich.
    Habe suche nun als suche.txt abgespeichert. Diff ergibt keinen Unterschied. Und grep macht sich auch lieb.


    Bin ich aber sowas von Steuerzeichenblind.


    lg
    swiss

    wer weiss,
    dass er noch viel mehr wissen kann,
    und nie aufhört Neues zu verstehen,
    ist klar im Vorteil.


    Wer Menschen kennt, die das Geheimnis eignen Glückes praktizieren,
    nämlich anderen zu helfen,
    ist Drinnen.


    Dazu noch Demut und ein glücklich tugendhaftes Leben
    läßt Dich erblühen.

    Für den Inhalt des Beitrages 50385 haftet ausdrücklich der jeweilige Autor: swissball

  • Warum postest du die die nicht?
    Warum schreibst du nicht beide Befehle?


    Sollen wir ein wenig über die Varianz möglicher Lösungen und seine philosophischen Implikationen debattieren?

    Für den Inhalt des Beitrages 50386 haftet ausdrücklich der jeweilige Autor: uhelp

  • Ich hätte da noch ein Vorschlag zum 2. Problem.


    Und zwar ein shell-script, das folgendermassen aussieht :


    Bash
    #!/bin/bash
    grep $1 alledateien2012-12.05 all_dokuments | less


    wenn man das unter den Dateiname suchen.sh speichert , hat es den Vorteil, das der Suchstring beim aufruf gleich mit gegeben werden kann.


    zb.


    Code
    sh suchen.sh <suchstring>


    oder noch kürzer

    Code
    ./suchen.sh <suchstring>


    wobei die Datei suchen.sh natürlich ausführbar seien muss. Der Suchstring wird direkt hintenangesetzt und bekommt dadurch den Variablenname $1.


    :D
    Bevor jetzt einige sich Beschweren ; ich weiß das es das Thema nicht genau trifft. Ich wollte es nur der Vollständig halber erwähnt haben.

  • Hallo boser und Persephone,

    Bevor jetzt einige sich Beschweren ; ich weiß das es das Thema nicht genau trifft. Ich wollte es nur der Vollständig halber erwähnt haben.

    Deine Vorschläge tränken hier ausgedörrten Wüstenboden und lassen hoffentlich blühende Landschaften entstehen [http://www.geovirtual.cl/Museovirtual/atur201a.htm].


    Persephone, wenn ich Dein Kommando so übernehme, dann kann ich in less nicht mehr "blättern". Z.B. ergibt "Pfeiltaste nach unten" die Ausgabe "^[OB" auf dem screen. Ich kann nur noch eine Zeile vorwärts blättern mit return.
    Mit welcher Tastenkombination komme ich da wieder raus?


    Boser, das ausführbare script gibt als Ergebnis immer einen leeren less pager.


    lg
    micca

    wer weiss,
    dass er noch viel mehr wissen kann,
    und nie aufhört Neues zu verstehen,
    ist klar im Vorteil.


    Wer Menschen kennt, die das Geheimnis eignen Glückes praktizieren,
    nämlich anderen zu helfen,
    ist Drinnen.


    Dazu noch Demut und ein glücklich tugendhaftes Leben
    läßt Dich erblühen.

    Für den Inhalt des Beitrages 50411 haftet ausdrücklich der jeweilige Autor: swissball

  • Hallo swissball,


    ich hab jetzt mal am lebenden Objekt mein Script versucht und bei mir hat es funktioniert. :D


    Jetzt einige Fragen , bzw. Anmerkungen:


    • Ist "all_dokuments" ein Verzeichnis oder eine Datei ?


    • Dein Suchindex , besteht das aus einem Wort oder aus mehren, sind Sonderzeichen , wie Leerzeichen, Punkt, Unterstrich drin ?


    • Was steht in der Datei "alledateien2012-12.05" ungefähr drin ? Bitte stell uns eine anonymisierte Beispieldatei zur Verfügung.



    Ohne diese Angaben ist eine Lösung , schier unmöglich :huh: , bzw. würde Glaskugel gucken bedeuten ?( , bzw. die Nadel im Heuhaufen suchen :wacko: , bedeuten.

  • Hallo boser,


    habe den Dateinamen korrigiert und jetzt funktioniert es.


    In alle Dateien habe ich den Verzeichnisbaum einer Festplatte. Und die Suchindizes sind die Dateinnamen.


    Vielen Dank
    lg
    micca

    wer weiss,
    dass er noch viel mehr wissen kann,
    und nie aufhört Neues zu verstehen,
    ist klar im Vorteil.


    Wer Menschen kennt, die das Geheimnis eignen Glückes praktizieren,
    nämlich anderen zu helfen,
    ist Drinnen.


    Dazu noch Demut und ein glücklich tugendhaftes Leben
    läßt Dich erblühen.

    Für den Inhalt des Beitrages 50414 haftet ausdrücklich der jeweilige Autor: swissball

  • Persephone, wenn ich Dein Kommando so übernehme, dann kann ich in less nicht mehr "blättern". Z.B. ergibt "Pfeiltaste nach unten" die Ausgabe "^[OB" auf dem screen. Ich kann nur noch eine Zeile vorwärts blättern mit return.
    Mit welcher Tastenkombination komme ich da wieder raus?


    Hallo swissball,


    das less hatte ich übersehen, sorry. So geht es:

    Code
    read -ep "Muster eingeben: ";grep "$REPLY" alledateien2012-12.05 all_dokuments | less

    (Dateinamen anpassen nicht vergessen).

    Einmal editiert, zuletzt von Persephone ()

    Für den Inhalt des Beitrages 50476 haftet ausdrücklich der jeweilige Autor: Persephone