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 -R
Option.
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 --include
Option 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>