grep-Befehl für eine Textdatei in mehreren Verzeichnissen

grep-Befehl für eine Textdatei in mehreren Verzeichnissen

Ich habe 24 Verzeichnisse in einem bestimmten Verzeichnis (Hauptverzeichnis). Jedes 24 Verzeichnis hat eine Textdatei mit dem Namen DATA.txt.

Ich muss den Grep-Befehl verwenden, um das folgende spezifische Muster für jede Textdatei zu extrahieren.

2* x  = 3800689.6402     y  = 882077.3636     z  = 5028791.2953

2* x =Teil ist für alle DATA.txt konstant. Die anderen numerischen Zahlen sind variabel. Ich muss die obige Zeile für jede DATA.txt extrahieren und in einer anderen Textdatei speichern. Welches Skript kann ich für diesen Vorgang verwenden?

Antwort1

Um rekursiv zu suchen grep, verwenden Sie die -ROption.

Verwenden Sie zum Suchen nach einer exakten Zeichenfolge -F, sodass diese 2*nicht als regulärer Ausdruck behandelt wird.

Um nur nach bestimmten Dateinamen zu suchen, verwenden Sie die --includeOption Kombiniert:

grep -FR --include=DATA.txt '2* x' main_directory > another_text_file

Antwort2

Da Sie den Namen der Zieldateien kennen, können Sie auch

grep '^2\* x' */DATA.txt > newfile

Oder mit awk:

awk '^/2\* x/' */DATA.txt > newfile

Und Perl:

perl -ne 'print if /2\* x/' */DATA.txt > newfile

Antwort3

Genereller Ansatz:

grep -r <pattern>

oder

spezifischer Ansatz:

find -name <file patterns which you want to find> | xargs grep <pattern you looking for>

verwandte Informationen