Der Text in Ihrer Datei lautet pages = {1113},
: Ja, es sieht aus wie die Nummer, 1113
aber nach dem ersten steht tatsächlich ein anderes Zeichen 1
. Und ja, Sie können die Zeichenfolge über den Bearbeitungslink für diese Webseite kopieren und einfügen, um das codierte Zeichen zu erhalten.
Wir können mit einigen Werkzeugen in die Zeichenfolge schauen:
$ a='pages = {1113},'
Oder um es explizit zu verdeutlichen und ein einfaches Kopieren und Einfügen zu ermöglichen, ohne die Bearbeitungsseite zu verwenden:
$ a=$(printf 'pages = {1\xc2\x96113},')
$ echo "$a" | od -An -tx1c
70 61 67 65 73 20 3d 20 7b 31 c2 96 31 31 33 7d
p a g e s = { 1 302 226 1 1 3 }
2c 0a
, \n
$ echo "$a" | sed -n l
pages = {1\302\226113},$
$ echo "$a" | xxd
00000000: 7061 6765 7320 3d20 7b31 c296 3131 337d pages = {1..113}
00000010: 2c0a
Das Zeichen besteht also aus zwei Byte-Werten c2 96
(in Hex) oder 302 226
(in Oktal).
Es ist wahrscheinlich die UTF-8-Codierung eines Bytewerts von 96
oder ausgedrückt als Unicode-Zeichen : U-0096
.
Dieser Wert, in der heutigen Zeit UTF-8 oder noch besser in ISO-8859-1, ist ein Steuerzeichen im C1-Bereich der Steuerzeichen ( Wikipedia-Seite ) und ( Unicode PDF ), das von 128 bis 159 in Dezimalzahl reicht. Insbesondere wird der U-0096 als "START OF GUARDED AREA" oder SPA bezeichnet .
Dieser Wert (Dez. 150) liegt außerhalb des ASCII-Bereichs (0-127) und wurde (in früheren Zeiten) verwendet, um abhängig von der verwendeten Codepage mehrere Zeichen darzustellen. Es scheint vernünftig anzunehmen, dass es sich zuvor um einen Bindestrich (um den Bereich 1-113 zu markieren) handelte, der in Windows-1252 ( Microsoft-Seite ) ( Wikipedia 1252 ) codiert und als en-Bindestrich bezeichnet wurde (der kleinere der beiden Bindestriche en und) em ) ( Wikipedia en dash ) oder einfach, in Laienbegriffen, ein Bindestrich ( -
).
Q1: Stimmt etwas mit dieser Datei nicht?
Nicht wirklich, Steuerzeichen sind gültige Zeichen, die selten verwendet werden, aber trotzdem gültig sind.
Sie können sie jedoch durch einen Bindestrich ersetzen, um die Bearbeitung zu vereinfachen.
<file.txt sed 's/\xc2\x96/-/'
F2 - Wie kann ich in derselben Datei nach anderen Vorkommen suchen?
sed -n '/\xc2\x96/p' # will print lines that contain that character.
Oder grep könnte nach dem Zeichen suchen (die Hervorhebung der Farbe ist nicht sichtbar, da das Zeichen nicht druckbar ist) und die Zeile drucken.
c="$(printf "\U96")" ; grep "$c" file.txt
Oder finden Sie alle Zeichen in diesem Steuerzeichenbereich und listen Sie die Dateien auf, die solche Zeichen enthalten:
grep -rlP "[\x80-\x9f]"
F3 - Wie kann ich nach anderen Dateien suchen, die möglicherweise dasselbe Problem / denselben Charakter enthalten?
Dadurch werden -l
die Dateien aufgelistet ( ), die dem Zeichen entsprechen.
grep -rlP "\x96"
hexdump -C filename
, die Kodierung dessen zu betrachten, was für Sie als "sichtbar" ist<96>
. Der Kontext sollte helfen, ihn genau zu bestimmen.