Normal aussehende Textdatei, von der Datei als ASCII Pascal-Programmtext erkannt

7

Ich habe eine "normal" aussehende Textdatei (enthält englische Sätze), die vom fileBefehl als erkannt wird ASCII Pascal program text.

Wie unterscheidet sich der Pascal-Programmtext vom normalen englischen ASCII-Text?

Ich tat head -10 file > tmp

file tmpzeigt immer noch Pascal. tmpwenn in VI und geöffnet:set list

HELEN'S BABIES$
$
With some account of their ways, innocent, crafty, angelic, impish,$
witching and impulsive; also a partial record of their actions during$
ten days of their existence$
$
By JOHN HABBERTON$
$
$
$

Ausgabe von head file | od -c

0000000   H   E   L   E   N   '   S       B   A   B   I   E   S  \n  \n
0000020   W   i   t   h       s   o   m   e       a   c   c   o   u   n
0000040   t       o   f       t   h   e   i   r       w   a   y   s   ,
0000060       i   n   n   o   c   e   n   t   ,       c   r   a   f   t
0000100   y   ,       a   n   g   e   l   i   c   ,       i   m   p   i
0000120   s   h   ,  \n   w   i   t   c   h   i   n   g       a   n   d
0000140       i   m   p   u   l   s   i   v   e   ;       a   l   s   o
0000160       a       p   a   r   t   i   a   l       r   e   c   o   r
0000200   d       o   f       t   h   e   i   r       a   c   t   i   o
0000220   n   s       d   u   r   i   n   g  \n   t   e   n       d   a
0000240   y   s       o   f       t   h   e   i   r       e   x   i   s
0000260   t   e   n   c   e  \n  \n   B   y       J   O   H   N       H
0000300   A   B   B   E   R   T   O   N  \n  \n  \n  \n
0000314

Hier hochgeladene Datei: http://www.fileswap.com/dl/L0eCWJTvy/

Ich bin auf CentOS release 6.5, fileVersion5.04

Da ist etwas in der 4. Zeile. Wenn Sie ab der 4. Zeile entfernen, wird diese als einzige Textdatei erkannt

user13107
quelle
2
Bitte geben Sie uns ein minimales Beispiel für die Datei, die das Problem reproduziert. Schauen Sie auch durch head file | od -c, um nach nicht druckbaren Zeichen zu suchen .
Terdon
@terdon hat es geschafft.
user13107
Vielen Dank. Welches Betriebssystem verwenden Sie? Können Sie uns einen Link zur Verfügung stellen, über den wir die eigentliche Datei herunterladen können? Die odAusgabe scheint nichts Seltsames zu enthalten .
Terdon
Hast du eine $HOME/.magicoder $HOME/.magic.mgcDatei?
Steeldriver
@steeldriver ja, soll ich es teilen? Gibt es eine Versionsnummer für diese Datei, mit der Sie sie identifizieren können?
user13107

Antworten:

7

Ich konnte dies sowohl unter OS X 10.6.8 als auch unter OpenBSD 5.5-current reproduzieren.

Wenn Sie Debug-Informationen mit drucken file -D tmp, stellt sich heraus, dass Ihre Textdatei ungefähr 2000 Tests nicht besteht, bevor file(1)das Pascal-Schlüsselwort erkannt wird recordund entschieden wird, dass es sich um einen Pascal-Programmtext handeln muss.

Ein minimales Arbeitsbeispiel kann wie folgt erhalten werden:

$ echo record > test
$ file test
test: ASCII Pascal program text

Nach zahlreichen Heuristiken gilt nur der "dritte und letzte Satz von Tests, basierend auf festverdrahteten Annahmen" in ascmagic.c . Diese Tests erkennen "Dateitypen, die wir anhand von Schlüsselwörtern kennen, die an einer beliebigen Stelle in der Datei erscheinen können". Daher minimale Änderungen an der Datei Ergebnis in der korrekten Identifizierung wie ASCII English textzum Beispiel zu ändern , theirum thein der dritten Zeile.

damien
quelle
Arch file-5.19erkennt die Datei von Op als ASCII-Text, aber Ihr Test zeigt Pascal-Quelle, ASCII-Text . Nach dem Versuch strings /usr/share/file/misc/magic.mgc | grep -C 10 'pascal'kann ich sehen, dass es sich um eine Aufzeichnung oder ein Programm am Anfang einer Zeile handelt oder (Eingabe, irgendwo im Text, was in meinem Fall eine solche Identifizierung auslöst. +1
Könnten Sie einen Stich unter unix.stackexchange.com/questions/140359/… machen ? Vielen Dank.
user13107