ich möchte ein programm schreiben, dass einen Text nach einem eingelesenen Word durchsucht. Gibt es einen Befehl unter Linux dafür, der sowas automatisch macht?
Befehl text zu durchsuchen?
- BadAzz
- 931 Aufrufe 9 Antworten
Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen
-
-
hmm bin mir nicht sicher ob es das ist was du suchst...
das ganze braucht natürlich Admin-Rechte, dann bist du sicher das alle Dateien durchsucht werden.
Der Befehl setzt sich folgendermassen zusammen:
'find' ....
1. Festlegen eines Startverzeichnisses
also z.b.
find /usr/local ...
2. die Suchbedingungen
Hier würde ich
'-name' vorschlagen, also der Name der Datei und dann *readme*
wobei die Shell natürlich die * nicht auswerten darf, also ist wichtig das ganze in Backslashs oder Apostrophe zu stellen
find /usr/local -name /*readme*/
3. Um jetzt in allen gefundenen readme an den Dateiinhalt zu kommen nehm ich mal
xargs
das prog greift für jeden gefundenen Namen auf den jeweiligen Dateiinhalt zu.
find /usr/local -name /*readme* | xargs
4. Die Dateinamen werden nun an das 'grep'-Kommando übergeben, das die Inhalte untersucht.
find /usr/local -name /*readme* | xargs grep
5. Dann brauch grep noch ein paar Optionen für die Ausgabe
(i = Groß/Kleinschreibung ignorieren)
(l = nur Dateinamen ausgeben)
find /usr/local -name /*readme* | xargs grep -il PPP
als Ergebnis sollte dann sowas wie
/usr/local/yxz/readme
/usr/local/asd/readme
/usr/local/dfg/readme
.
.
.
nun kannst den Kram mitm Editor untersuchen...
so long -
einen Text nach einem eingelesenen Word durchsucht
wie Kappa schon sagt, der Befehl lautet grep
um das komplette System zu durchsuchen, koennte der Befehl lauten:
find / -type f -exec grep 'Suchbegriff' {} \; -print 2>/dev/null
(Leerzeichen beachten!!!)
als Ergebnis bekommst du alle Zeilen, die den Suchbegriff beinhalten, sowie den jeweils absoluten Dateipfad
Solltest du wirlich nur einen bestimmten, in Dateiform vorliegenden Text durchsuchen wollen, dann oeffne die Datei mit dem vi-Editor, z.B.: vi Test.txt. Gib dann einen Slash ein und dahinter unmittelbar den Suchbegriff, also: /Suchbegriff. Sollte der Begriff gefunden werden, wird er highlighted. Mit n kannst du weitersuchen und mit N rueckwaerts suchen. -
Erst mal danke für die schnellen Antworten.
Juergen:
Wenn ich das richtig versteheh muss ich dann die Textdatei öffnen.
Gibt es eine Möglichkeit den Text nach dem Wort zu durchsuche, ohne die Datei zu öffnen?
Vielleicht sollte ich mal erklähren, was ich mir genau vorstelle:
Ich habe verschiedene Textdateien.
Ich will in dem Programm ein Wort einlesen, und das Programm soll dann überprüfen, und ausgeben, in welchen der Dateien das Wort vorkommt. -
ahhh also doch
dann beschäftige dich mal mit meiner Erklärung.
Hätte ich noch ein wenig ausführlicher machen sollen...
find /usr/local -name /*readme* | xargs grep -il PPP
Du brauchst DIESEN Befehl!
mit -name /*readme*/
sucht er nach files mit dem Namen 'readme'
Durch die // wird die Shell daran gehindert, die * auszulesen.
Also wenn du nach ner *.txt
suchen willst mußt du die // weglassen
xargs ist in der lage in eine Datei zu 'sehen' ohne diese zu öffnen...
und mit grep wird der gefundene Wert ausgelesen.
Am Ende (PPP) steht halt das Wort wonach du suchen willst.
so long -
Jo das funktiniert!
Aber eine Frage hab ich noch:
Ich will das ganze in ein C Programm einbauen. Kann ich die eingelesene Variable in den System Befehl einbaun? Wenn ich es so mache:
system("...grep -il %s *.html",suchbegriff);
sagt der Kompiler:
too many arguments in funktion 'system'
Hat jemand einen Vorschlag wie das funktionieren könnte? -
-
Original geschrieben von BadAzz
Jo das funktiniert!
Aber eine Frage hab ich noch:
Ich will das ganze in ein C Programm einbauen. Kann ich die eingelesene Variable in den System Befehl einbaun? Wenn ich es so mache:
system("...grep -il %s *.html",suchbegriff);
sagt der Kompiler:
too many arguments in funktion 'system'
Hat jemand einen Vorschlag wie das funktionieren könnte?
-
wieso nicht nur mit grep
ihr müßt einfach nur rtfm (read the fuck manuel)
grep [suchbegriff] / (durchsucht deine ganzen dateien nach nem suchbegriff fertig ist dein program -
Original geschrieben von seebaer
ihr müßt einfach nur rtfm (read the fuck manuel)
UUUUIIIIIIII :eek:
jetzt weiß ich endlich mal was das heißen soll :boing:
Schöner Einstandspost
-
Teilen
- Facebook 0
- Twitter 0
- Google Plus 0
- Reddit 0