ubuntuusers.de

Fehlermeldung bei "grep"

Status: Gelöst | Ubuntu-Version: Lubuntu 18.04 (Bionic Beaver)
Antworten |

Rosika

Anmeldungsdatum:
26. Februar 2016

Beiträge: 1359

Hallo zusammen,

aus einem bestimmten Grunde wollte ich mir meine Syslog-Datei ansehen und verwendete den Befehl

cat /var/log/syslog | grep 16:05

,wie schon oft in der Vergangenheit (Uhrzeit natürlich je nach Situation angepaßt). Das hat immer gut funktioniert. Doch diesmal bekam ich lediglich die Meldung "Übereinstimmungen in Binärdatei (Standardeingabe)", anstatt der vorhandenen Einträge.

Nach ein wenig Nachforschen im Netz fand ich auf der Seite https://doc.rldml.de/doku.php?id=linux:grepbinaer den Hinweis:

Gelegentlich kommt bei der Anwendung von grep die Fehlermeldung Übereinstimmungen in Binärdatei (Standardeingabe)

obwohl die fragliche Datei eine Textdatei ist. In dem Fall kann man den Parameter –text übergeben: cat file.log | grep --text Suchbegriff

Mit dem Befehl

cat /var/log/syslog | grep --text 16:05

hat es dann wieder normal geklappt. Alle Einträge wurden angezeigt.

Meine Frage ist nun: Da mir das heute zum ersten Mal passiert ist, hat sich da bei "grep" irgendetwas geändert, oder weiß von Euch jemand etwas mehr über dieses Phänomen?

Danke schonmal und LG.

Rosika 😕

Moderiert von sebix:

Thema in einen passenden Forenbereich verschoben. Bitte beachte die als wichtig markierten Themen („Welche Themen gehören hier her und welche nicht?“) in jedem Forenbereich. Danke.

wxpte

Anmeldungsdatum:
20. Januar 2007

Beiträge: 1388

Leider kann ich dir die Frage nicht beantworten. Einen gepipeten Befehl brauchst du in diesem Fall jedenfalls nicht, schau mal hier:

Ein simples

grep "16:05" /var/log/syslog

oder ggf.

grep --text "16:05" /var/log/syslog

tut es also auch.

Kellerkind_2009

Avatar von Kellerkind_2009

Anmeldungsdatum:
26. November 2009

Beiträge: 19617

Wohnort: Schleswig-Holstein

Hmmm

stephan@stephan-Desktop:~$ cat /var/log/syslog | grep 16:05
May 11 16:05:03 stephan-Desktop dbus-daemon[1563]: Activating service name='org.freedesktop.Notifications'
May 11 16:05:03 stephan-Desktop dbus-daemon[1563]: Successfully activated service 'org.freedesktop.Notifications'

Ausgabe von

file /var/log/syslog

bei dir?

Rosika

(Themenstarter)

Anmeldungsdatum:
26. Februar 2016

Beiträge: 1359

Hallo und danke für Eure Antworten.

@wxpte:

Aha, da habe ich anscheinend das "sinnlose cat" verwendet. Danke für die Aufklärung.

Tatsächlich habe ich den von Dir geposteten Link schon einmal gelesen, ihn aber schon lange vergessen..... 😢 In Zukunft werde ich grep "XX:XX" /var/log/syslog verwenden.

@Kellerkind_2009:

Danke. Hier die Info:

file /var/log/syslog 
/var/log/syslog: ASCII text

LG. Rosika

Kellerkind_2009

Avatar von Kellerkind_2009

Anmeldungsdatum:
26. November 2009

Beiträge: 19617

Wohnort: Schleswig-Holstein

Hier bei mir sieht es so aus – warum auch immer 😕

stephan@stephan-Desktop:~$ file /var/log/syslog
/var/log/syslog: UTF-8 Unicode text

Werde nachher nochmal bei meinem 19.04 Checken.

Gruß Stephan

Nachtrag

stephan@stephan-HP-Pavilion-17-Notebook-PC:~$ file /var/log/syslog 
/var/log/syslog: UTF-8 Unicode text, with very long lines

Ebenfalls UTF-8 und gefilterte Abfrage möglich.

Rosika

(Themenstarter)

Anmeldungsdatum:
26. Februar 2016

Beiträge: 1359

@Kellerkind_2009:

Danke für Deine Mühe.

Ich habe gerade in meiner VM nachgesehen (BodhiLinux 16.04, 32 bit)

Da bekomme ich ebenfalls folgendes heraus:

rosika@rosika-virtual-machine ~> file /var/log/syslog
/var/log/syslog: UTF-8 Unicode text

Wirklich kurios........

LG und einen schönen Sonntag noch.

Rosika ☺

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13210

Rosika schrieb:

Meine Frage ist nun: Da mir das heute zum ersten Mal passiert ist, hat sich da bei "grep" irgendetwas geändert, oder weiß von Euch jemand etwas mehr über dieses Phänomen?

Es spielen hier mindestens folgende Komponenten eine Rolle:

  • der Inhalt der durchsuchten Datei (genauer: das Format, in Deinem Fall anscheinend "UTF-8")

  • das Programm grep

  • die aktuelle Locale (kannst Du Dir mit locale anzeigen lassen)

Bei grep hat sich höchstwahrscheinlich nix geändert, was die anderen beiden Optionen übrig lässt. Entweder hast Du absichtlich oder unabsichtlich die Locale in der Shell geändert, von der aus Du grep aufrufst, oder aus irgendwelchen Gründen hat sich etwas am Format der Logdatei geändert (z.B: ein Programm hat jetzt eine Fehlermeldung mit Umlauten hineingeschrieben).

Rosika

(Themenstarter)

Anmeldungsdatum:
26. Februar 2016

Beiträge: 1359

Danke rklm für Deine Ausführungen.

Entweder hast Du absichtlich oder unabsichtlich die Locale in der Shell geändert, von der aus Du grep aufrufst, oder aus irgendwelchen Gründen hat sich etwas am Format der Logdatei geändert (z.B: ein Programm hat jetzt eine Fehlermeldung mit Umlauten hineingeschrieben).

O.K., die Locale habe ich nicht geändert. Bleibt noch der andere Punkt (Format der Logdatei).

Auf jeden Fall habe ich jetzt ein paarmal grep "XX:XX" /var/log/syslog ausgeführt und habe mit dieser Syntax damit bislang keine Probleme bekommen.

Danke nochmals für die Info.

LG. Rosika

Kellerkind_2009

Avatar von Kellerkind_2009

Anmeldungsdatum:
26. November 2009

Beiträge: 19617

Wohnort: Schleswig-Holstein

Wie sieht den die Ausgabe aus?

locale

Rosika

(Themenstarter)

Anmeldungsdatum:
26. Februar 2016

Beiträge: 1359

Hallo Stephan,

So sieht´s aus:

rosika@rosika-Lenovo-H520e ~> locale 
LANG=de_DE.UTF-8
LANGUAGE=de_DE
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=

Kellerkind_2009

Avatar von Kellerkind_2009

Anmeldungsdatum:
26. November 2009

Beiträge: 19617

Wohnort: Schleswig-Holstein

Hmm,das sieht bei mir genauso aus 😊

stephan@stephan-Desktop:~$ locale
LANG=de_DE.UTF-8
LANGUAGE=de_DE
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=
stephan@stephan-Desktop:~$ 

Vielleicht weiß rklm mehr.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13210

Kellerkind_2009 schrieb:

Vielleicht weiß rklm mehr.

Leider im Moment nicht. Ich habe nochmal gelesen, sehe ich das richtig, dass file sagt, die Datei ist ASCII? Dann ist es umso verwunderlicher, dass Du den ursprünglichen Fehler bekommen hast, denn das ist dann wirklich 7 bit ASCII und sollte fast unter jeder Locale als Text gelesen werden. Es sei denn, syslog ist zwischendurch rotiert worden. Ich habe aus Spaß mal geschaut und bei mir ist es folgendes:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
$ file /var/log/syslog{,.1}
/var/log/syslog:   UTF-8 Unicode text, with very long lines
/var/log/syslog.1: UTF-8 Unicode text, with very long lines
$ for f in /var/log/syslog.*.gz; do echo "$f"; gzip -dc "$f" | file -; done
/var/log/syslog.2.gz
/dev/stdin: UTF-8 Unicode text, with very long lines
/var/log/syslog.3.gz
/dev/stdin: UTF-8 Unicode text, with very long lines
/var/log/syslog.4.gz
/dev/stdin: UTF-8 Unicode text, with very long lines
/var/log/syslog.5.gz
/dev/stdin: UTF-8 Unicode text, with very long lines
/var/log/syslog.6.gz
/dev/stdin: UTF-8 Unicode text, with very long lines
/var/log/syslog.7.gz
/dev/stdin: UTF-8 Unicode text, with very long lines

Die einzige andere Erklärung, die mir noch einfällt, wäre, dass Du versucht hast zu greppen, während gerade in die Datei geschrieben wurde und da vorübergehend "merkwürdiger" Inhalt sichtbar gewesen ist (z.B. weil ein UTF-8 Multibyte-Zeichen nicht komplett geschrieben war und damit der Inhalt kein korrektes UTF-8 war).

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6502

Wohnort: Hamburg

Also ich habe diese Meldung auch schon öfters gesehen wenn ich rekursiv gesucht habe. Allerdings habe ich mir nicht viel dabei gedacht, da im gleichen Verzeichnisbaum auch Binärdateien liegen.

Aber der Beitrag von rklm bringt mich auf eine Idee. Könnte es sein, das grep unvollständige Zeichen aus der Pipe liest, z.B. weil cat noch gar nicht fertig war? Ich komme darauf wegen "(Standardeingabe)". Das bedeutet ja, grep sieht gar keine vollständige Datei.

Rosika

(Themenstarter)

Anmeldungsdatum:
26. Februar 2016

Beiträge: 1359

Danke erneut für Eure Hilfe.

Es tut mir schon Leid, daß Ihr Euch so viel Mühe macht..... 😢

Nun habe ich erneut den file-Befehl ausgeführt. Ich denke, ich spinne. Nun kommt folgendes dabei heraus:

rosika@rosika-Lenovo-H520e ~> file /var/log/syslog 
/var/log/syslog: UTF-8 Unicode text

So, wie bei Euch auch. Ich habe aber den Computer in der Zwischenzeit weder ausgeschaltet noch einen Reboot durchgeführt. Erklärlich ist das für mich nicht...... 🙄

Auch taucht das beschriebene Phänomen nicht mehr auf, unabhängig davon, welche Syntax ich benutze. Bis auf gestern hatte ich auch mit meiner alten Syntax nie eine Fehlermeldung bekommen.

Ich denke, ich beobachte das auf jeden Fall weiter.

Nochmals herzlichen Dank Euch allen.

LG. Rosika

Rosika

(Themenstarter)

Anmeldungsdatum:
26. Februar 2016

Beiträge: 1359

@Dakuan:

Also ich habe diese Meldung auch schon öfters gesehen

Danke, das ist eine kleine Beruhigung für mich.

Könnte es sein, das grep unvollständige Zeichen aus der Pipe liest, z.B. weil cat noch gar nicht fertig war? Ich komme darauf wegen "(Standardeingabe)". Das bedeutet ja, grep sieht gar keine vollständige Datei.

Möglicherweise. Da hast Du sicherlich mehr Einblick als ich.

Wie bereits gesagt, kann ich dieses Phänomen jetzt gar nicht mehr reproduzieren. Und weitere Angaben/Infos als die bereits gemachten kann ich im Moment nicht liefern. Sorry.

Aber herzlichen Dank für Deine Antwort.

LG. Rosika ☺

Antworten |