bzgrep -H Musterdatei.bz2 enthält keinen Dateinamen, sondern "Standardeingabe"

990
Washuu

Ich dachte, -H sollte immer den Dateinamen vor der übereinstimmenden Zeile drucken. Dies gilt für grep, nicht für bzgrep:

$ grep -H pattern file1  file1: data pattern data  $ bzgrep -H pattern file2.bz2  (standard input): data pattern data 

Gibt es eine Problemumgehung dafür? Ich muss hunderte von bz2-Dateien grepen, ich kann sie nicht alle vor der Suche dekomprimieren ...

1
Versuchen Sie, mehrere Dateien in der Befehlszeile anzugeben golimar vor 10 Jahren 0
Kommandozeile wäre dafür zu kurz. Es gibt Hunderte von Dateien, die durchsucht werden sollen. Ich verwende bzgrep in einer "for" -Schleife, bei der die Variable Dateiname aus einer Liste genommen wird, da sich die Dateien in verschiedenen Verzeichnissen befinden. Washuu vor 10 Jahren 0
Dann erstellen Sie eine leere Datei und grep jedes Mal die bz2-Datei und die leere Datei golimar vor 10 Jahren 0
Es ist so etwas wie ein Workaround, danke. Der einzige Nachteil ist, dass der Dateiname in einer separaten Zeile steht, was korrekt analysiert werden muss. Ich wundere mich jedoch, warum ein solcher Fehler nicht bemerkt wurde. Vielleicht habe ich eine zu alte Version von bzgrep? Ich werde es auf dem neuesten CentOS testen. Washuu vor 10 Jahren 0

2 Antworten auf die Frage

0
barbaz

Es gibt (meines Wissens) keine Version grep, die intern gzip / bzip2 unterstützt. Stattdessen gibt es Shell - Scripts, wie bzgrepund zgrep, die im Wesentlichen der Anruf gunzip/ bunzip2Binärdateien und die Ausgabe in grep über stdin zuzuführen. Daher kann das -HFlag nicht wie erwartet funktionieren, wenn Sie grep nicht direkt aufrufen.

0
Washuu

Ich habe mir bzgrep angesehen. Es war tatsächlich eine Bash-Skriptdatei. Die Änderung des Skripts zur Behebung des Problems war ziemlich einfach. Daher fragte ich mich, ob jemand anderes es in einer neueren Version von bzgrep korrigiert hatte. Ich habe herausgefunden, dass es unter Ubuntu und Debian korrigiert wird, aber nicht unter CentOS.

Wenn jemand auf dasselbe Problem stößt, melden Sie sich einfach bei einem neueren System an und kopieren Sie das Shell-Skript bzgrep. Es ist die einfachste Lösung.

Könnten Sie die erforderliche Änderung in Ihrer Antwort posten? Dennis vor 10 Jahren 0