Passen Sie den grep-Befehl an, um zusätzliche Zeilen zu vermeiden

372
susik

Ich muss etwas Text in gezippten Dateien finden. Ich benutze Cygwin. Einige gezippte Dateien sind leer. Natürlich möchte ich keine "lauten" Informationen über diese "leeren ZIP-Dateien" haben. Z.B

find . -iname '*.zip' -print -exec unzip -l {} \; |grep -i vbs 

Wo vbsist ein String, nach dem ich suche?

Das Problem ist, dass es das gibt, wonach ich suche, aber es gibt auch viel Lärm mit Zeilen wie diesen:

C\ProgramData\ABC\DEF\VBScripts\OutputArchiveFiles.vbs warning [/z/XYZ/Backup/123/456/Backup Set 1/Backup Files 1/Backup files 2.zip]: zipfile is empty 

Ich möchte diese Zeilen mit 'zipfile is empty' nicht sehen

Ich habe versucht, mit zu pfeifen, |grep -v 'zipfile is empty'aber es gibt auch diese Zeilen aus.

Meine Frage: Wie kann ich es vermeiden, diese leeren Zeilen zu drucken und nur die Zeilen zu sehen, nach denen ich suche? dh vbs?

1

1 Antwort auf die Frage

1
Jedi

Diese zusätzlichen Zeilen befinden sich wahrscheinlich im stderrStream. Sie können testen, ob sie in eine separate Datei umgeleitet werden (z. B. command 2> error.txt).

Laufen Sie grundsätzlich:

find . -iname '*.zip' -print -exec unzip -l {} \; 2> error.txt |grep -i vbs 

Wenn dies Ihr Problem behebt, können Sie ersetzen error.txtmit /dev/null(nicht alle Versionen von Cygwin arbeiten kann)

Danke für die Antwort, aber die Umleitung auf 2> machte keinen Unterschied, dh die Datei error.txt wird erstellt, sie ist leer und ich habe immer noch eine Menge 'leerer' Zeilen gedruckt. Vielen Dank susik vor 8 Jahren 0
- Jedi, vielen Dank, es funktioniert nicht perfekt. Die letzte Anforderung: Aktuelle Implementierung finden. -iname '* .zip' -print -exec unzip -l {} \; 2> error.txt | grep -i vbs ... stimmt mit dem Muster im Dateinamen überein. ABER in den meisten Fällen muss ich eine Datei anhand des Inhalts finden, z. B. ist vbs nicht Teil des Dateinamens, sondern Teil des Dateiinhalts. Könnten Sie mir helfen, zB die Suche anhand des Dateiinhalts zu ermöglichen? Nochmals vielen Dank und danke für Ihre Hilfe susik vor 8 Jahren 0