grep -f Dateien in einem gezippten Ordner

8

Ich habe ein Problem, ich hoffe, dass jemand mit ... helfen kann.

Ich führe eine rekursive fgrep / grep -f Suche in einem gezippten Ordner mit dem folgenden Befehl in einem meiner Programme durch:

Der Befehl, den ich verwende

%Vor%

Innerhalb der Musterdatei befindet sich die Zeichenfolge "Hund", nach der ich suchen möchte.

Im gezippten Ordner befinden sich einige Textdateien, die die Zeichenfolge "Hund" enthalten.

Der Befehl grep -f findet erfolgreich die Textdateien mit der Zeichenfolge "Hund" in drei Dateien im gezippten Ordner, aber die Ausgabe wird in einer Zeile ausgegeben und einige seltsame Zeichen erscheinen am Ende, dh PK (wie abgebildet) unten). Und wenn ich versuche, die Ausgabe in eine Datei in meinem Programm zu drucken, erscheinen am Ende andere Zeichen wie ^B^T^@

Ausgabe vom Befehl grep -f:

%Vor%

Wie bekomme ich die Dateien, in denen die Zeichenfolge "Dog" gefunden wurde, in einer neuen Zeile, so dass sie nicht alle in einer Zeile zusammengefasst sind, wie sie jetzt sind? Wo sind auch die "PK" und andere seltsame Zeichen in der Ausgabe und wie verhindere ich, dass sie erscheinen?

Gewünschte Ausgabe

%Vor%

Etwas in diese Richtung, wobei der Benutzer sehen kann, wo sich die Zeichenfolge in der Datei befindet (Sie erhalten die Ausgabe in diesem Format, wenn Sie den Befehl grep für eine Datei ausführen, die keine Zip-Datei ist).

Ihre Hilfe wird sehr geschätzt, danke

    
perl-user 02.08.2013, 11:31
quelle

1 Antwort

10

Wenn Sie eine mehrzeilige Ausgabe benötigen, verwenden Sie besser zipgrep :

%Vor%

Das -s soll Fehlermeldungen unterdrücken (optional). Dieser Befehl druckt alle übereinstimmenden Zeilen zusammen mit dem Dateinamen. Wenn Sie die doppelten Namen entfernen möchten, wenn mehr als eine Übereinstimmung in einer Datei vorhanden ist, müssen einige andere Verarbeitungen mit loops / grep oder awk oder sed durchgeführt werden.

Eigentlich ist zipgrep eine Kombination egrep und unzip . Und seine Verwendung ist wie folgt:

%Vor%

, damit Sie alle egrep-Optionen daran übergeben können.

    
blackSmith 02.08.2013, 12:01
quelle

Tags und Links