PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : suche nach wörter in datei



mapiox
08.05.2002, 18:51
Wie kann ich den Inhalt von Dateien nach bestimmten Wörtern durchsuchen?

Habe einen Ordner mit einigen *.php Dateien. Diese Dateien möchte ich nun alle nach einem bestimmten Wort durchsuchen.

Zaphod
08.05.2002, 19:45
man grep :D

Andre
08.05.2002, 19:49
das geht aber nicht nur mit grep allein....dazu muss er nen script schreiben?!?!

Zaphod
08.05.2002, 20:13
Die grep-Hilfe sagt:
8><-------------------------------------------------------------------------------
Suche nach MUSTER in jeder DATEI oder der Standardeingabe.
Beispiel: grep -i &acute;Hallo Welt&acute; menu.h main.c

Auswahl und Interpretation regulärer Ausdrücke:
-E, --extended-regexp PATTERN is an extended regular expression
-F, --fixed-strings PATTERN is a set of newline-separated strings
-G, --basic-regexp PATTERN is a basic regular expression
-P, --perl-regexp PATTERN is a Perl regular expression
-e, --regexp=MUSTER MUSTER als regulären Ausdruck verwenden.
-f, --file=FILE MUSTER aus DATEI lesen.
-i, --ignore-case Unterschied zwischen Groß- und Kleinschreibung
ignorieren.
-w, --word-regexp MUSTER paßt nur auf ganze Wörter.
-x, --line-regexp MUSTER paßt nur auf ganze Zeilen.
-z, --null-data Eine Zeile endet mit Nullbyte, nicht Newline.

Verschiedenes:
-s, --no-messages Fehlermeldungen unterdrücken.
-v, --revert-match Nicht-passende Zeilen anzeigen.
-V, --version Versionnummer ausgeben und beenden.
--help Diese Hilfe ausgeben und beenden.
--mmap Wenn möglich, Eingabe in den Speicher mappen.

Output control:
-m, --max-count=NUM stop after NUM matches
-b, --byte-offset print the byte offset with output lines
-n, --line-number print line number with output lines
--line-buffered flush output on every line
-H, --with-filename print the filename for each match
-h, --no-filename suppress the prefixing filename on output
-o, --only-matching show only the part of a line matching PATTERN
-q, --quiet, --silent suppress all normal output
--binary-files=TYPE assume that binary files are TYPE
TYPE is &acute;binary&acute;, &acute;text&acute;, or &acute;without-match&acute;
-a, --text equivalent to --binary-files=text
-I equivalent to --binary-files=without-match
-d, --directories=ACTION how to handle directories
-b, --byte-offset print the byte offset with output lines
-n, --line-number print line number with output lines
--line-buffered flush output on every line
-H, --with-filename print the filename for each match
-h, --no-filename suppress the prefixing filename on output
-o, --only-matching show only the part of a line matching PATTERN
-q, --quiet, --silent suppress all normal output
--binary-files=TYPE assume that binary files are TYPE
TYPE is &acute;binary&acute;, &acute;text&acute;, or &acute;without-match&acute;
-a, --text equivalent to --binary-files=text
-I equivalent to --binary-files=without-match
-d, --directories=ACTION how to handle directories
ACTION is &acute;read&acute;, &acute;recurse&acute;, or &acute;skip&acute;
-D, --devices=ACTION how to handle devices, FIFOs and sockets
ACTION is &acute;read&acute; or &acute;skip&acute;
-R, -r, --recursive equivalent to --directories=recurse
--include=PATTERN files that match PATTERN will be examined
--exclude=PATTERN files that match PATTERN will be skipped.
--exclude-from=FILE files that match PATTERN in FILE will be skipped.
-L, --files-without-match only print FILE names containing no match
-l, --files-with-matches only print FILE names containing matches
-c, --count only print a count of matching lines per FILE
-Z, --null print 0 byte after FILE name

Context control:
-B, --before-context=NUM print NUM lines of leading context
-A, --after-context=NUM print NUM lines of trailing context
-C, --context=NUM print NUM lines of output context
-NUM same as --context=NUM
--color[=WHEN],
--colour[=WHEN] use markers to distinguish the matching string
WHEN may be `always&acute;, `never&acute; or `auto&acute;.
-U, --binary do not strip CR characters at EOL (MSDOS)
-u, --unix-byte-offsets report offsets as if CRs were not there (MSDOS)

`egrep&acute; means `grep -E&acute;. `fgrep&acute; means `grep -F&acute;.
With no FILE, or when FILE is -, read standard input. If less than
two FILEs given, assume -h. Exit status is 0 if match, 1 if no match,
and 2 if trouble.
-------------------------------------------------------------------------------><8
... ist alles drin, was er sucht - regular expression und Dateinamen angeben (Wildcards gehen) und ab die Reise, Ergebnis dann in eine Datei umleiten oder nach less pipen - für son Kleinkram muss man nicht scripten :D

mapiox
08.05.2002, 20:15
Danke
grep ist gut ,hatte die ganze Zeit &quot;find&quot; im Kopf :rolleyes:

@andre

grep &quot;gesuchtes_wort&quot; *

durchsucht jede Datei im Verzeichnis

Andre
08.05.2002, 20:33
ihr habt recht.... :)

08.05.2002, 20:52
cd /php-dir
grep &quot;Wort&quot; *

rup
08.05.2002, 23:02
Wenn es wenige Dateien sind:
grep &quot;Suchstring&quot; *.php


Wenn es viele Dateien (eventuell in Unterverzeichnissen) sind:

for i in `find -name &quot;*.php&quot;`
do
grep &quot;Suchstring&quot; $i
done

mapiox
09.05.2002, 10:10
Danke ;)

Lohnt sich aber nur wenn man alle bzw mehrere Verzeichnisse durchsuchen will

Nightwing
09.05.2002, 13:08
wenn du schon find benutzt dann brauchst du nicht unbedingt eine for schleife drumrum basteln. geht auch so

find . -name &acute;*&acute; -type f -exec /bin/grep -e &quot;suchstring&quot; {} ;

ich finde das ist wesentlich schneller und praktischer :)

eXploed
25.02.2005, 12:43
ich habe das gleiche problem versteh aber nur bahnhof bei euch?!

ich suche ganz konkret diese zeile:

&FRPROZ IndependentTrue IndependentTrue video.bm /usr/txpom/web4video/Client.sh

und darunter solln break (absatz) und da will ich nen text hin haben, wie funzt das? bitte erklärt es n00b-verständlich :(