2017-09-04 2 views
0

ich für ein Wort in der Datei suchen kann mit grep zum Beispiel:grep in den Dateien für Wort sucht mit ‚=‘

grep 'total energy' file* 

aber ich kann mit = für ein Wort nicht suchen, Zum Beispiel:

grep 'total energy =' file* 

Warum? Gibt es eine Lösung für das oben genannte Problem?

+0

Mögliche Duplikat [Grep für Sonderzeichen in Unix] (https://stackoverflow.com/ Fragen/12387685/grep-for-special-Zeichen-in-Unix) – GhostCat

Antwort

0

Sie haben doppelte Anführungszeichen verwenden ("") wie diese

grep "total energy =" /your/file 

wo Sie /your/file mit dem Namen der Datei ersetzen. Lesen Sie difference between "" and ''.


durch alle Dateien im aktuellen Verzeichnis suchen, möchten Sie den nächsten Befehl

find ./ -type f -exec grep "total energy =" {} \; 

Was dies tut, ist es zuerst alle Dateien im aktuellen Verzeichnis findet mit find (./ aktuellen Verzeichnis bezeichnet -type f steht nur für Dateien). Dann führt es grep Suche nach "total energy =". \ bedeutet, wo das Ende von -exec ist, falls es noch etwas anderes geben würde.

Wenn Sie nur über Dateien durchsuchen möchten, die wie frame[number].inp sind, können Sie regex mit find verwenden:

find ./ -regextype posix-extended -regex '.*?\.inp' -exec grep "total energy =" {} \; 
+0

auch es funktioniert nicht !! –

+0

Es funktioniert in meinem Fall, ich werde Ihnen zeigen, was ich mache ... – campovski

+0

https://prnt.sc/ggyqc7 – campovski