Neue Zeile

Newline zwischen den Wörtern "Hallo" und "Welt" eingefügt.

Neue Zeile (häufig genannt Zeilenende, Ende der Linie (Eol), nächste Zeile (Nel) oder Zeilenumbruch) ist ein Steuerzeichen oder Abfolge von Kontrollzeichen in a Zeichenkodierung Spezifikation (z. B.,, ASCII, Ebcdic) das wird verwendet, um das Ende von a zu bedeuten Textlinie und der Beginn eines neuen.[1]

Geschichte

Mitte des 19. Jahrhunderts, lange vor dem Aufkommen von Teleprinter und Teletypmaschinen, Morse-Code Operatoren oder Telegraphisten erfunden und verwendet Morse Code Prosigns So codieren Sie die Formatierung von White Space -Text in formalen geschriebenen Textnachrichten. Insbesondere die Morse Prognose Bt (mnemonisch bWiederaufnahme text) dargestellt durch die Verkettung von wörtlichen textuellen Morsecodes "B" und "T" -Sports, die ohne den normalen Inter-Charakter-Abstand gesendet werden, wird im Morse-Code verwendet, um a zu codieren und anzuzeigen Neue Zeile oder neuer Bereich in einer formalen SMS.

Später im Zeitalter der modernen TeleprinterEs wurden standardisierte Kontrollcodes für Zeichensatze entwickelt, um die Formatierung von White Space Text zu unterstützen. ASCII wurde gleichzeitig von der entwickelt Internationale Standardisierungsorganisation (ISO) und die American Standards Association (ASA), wobei letztere die Vorgängerorganisation für American National Standards Institute (ANSI). Im Zeitraum von 1963 bis 1968 unterstützten die ISO -Entwurfsstandards die Verwendung von beiden Cr+ Lf oder Lf allein als Newline, während die ASA -Entwürfe nur unterstützten Cr+Lf.

Die Sequenz Cr+Lf wurde häufig für viele frühe Computersysteme verwendet, die übernommen hatten Teletyp Maschinen - Typisch a Teletyp -Modell 33 ASR - als Konsolenvorrichtung, da diese Sequenz diese Drucker zu Beginn einer neuen Linie positionieren musste. Die Trennung von Newline in zwei Funktionen verdeckte die Tatsache, dass der Druckkopf nicht rechtzeitig vom äußersten Recht zum Beginn der nächsten Zeile zurückkehren konnte, um den nächsten Charakter zu drucken. Jeder Charakter, der nach a gedruckt ist Cr Drucken Sie oft als Schmutz in der Mitte der Seite, während der Druckkopf den Wagen immer noch auf die erste Position bewegte. "Die Lösung bestand darin, die Newline zwei Zeichen zu machen: Cr Um den Wagen in Spalte eins zu bewegen, und Lf Um das Papier hochzuziehen. "[2] Tatsächlich war es oft notwendig, zusätzliche Charaktere zu senden - extrane CRS oder Nuls -, die ignoriert werden, aber die Druckkopfzeit geben, um sich zum linken Rand zu bewegen. Viele frühe Videoanzeigen benötigten auch mehrere Charakterzeiten, um scrollen der Bildschirm.

Auf solchen Systemen mussten Anwendungen direkt mit der Teletypenmaschine sprechen und ihre Konventionen seit dem Konzept von befolgen Gerätetreiber Das Verstecken solcher Hardwaredetails aus der Anwendung war noch nicht gut entwickelt. Daher bestand der Text routinemäßig, um die Bedürfnisse von Teletypmaschinen zu erfüllen. Die meisten Minicomputer -Systeme von Dez benutzte diese Konvention. CP/m verwendete es auch, um auf denselben Klemmen zu drucken, die Minicomputer verwendeten. Von dort MS-DOS (1981) verabschiedet CP/m's Cr+Lf Um kompatibel zu sein, und diese Konvention wurde später von Microsofts geerbt Fenster Betriebssystem.

Das Mehrheit Das Betriebssystem begann 1964 mit der Entwicklung und wurde verwendet Lf allein als neue Linie. Multics verwendeten einen Gerätetreiber, um dieses Zeichen in die Sequenz zu übersetzen, die ein Drucker benötigte (einschließlich zusätzlicher Polsterzeichen), und das einzelne Byte war bequemer für die Programmierung. Was wie eine offensichtlichere Wahl erscheint -Cr- wurde nicht benutzt, als Cr Bereitstellung der nützlichen Funktion, eine Zeile mit einer anderen zum Erstellen zu überdrucken Fettdruck, unterstreichen und Streifen Auswirkungen. Vielleicht noch wichtiger ist, die Verwendung von Lf allein als Linien -Terminator war bereits in Entwürfe des späteren ISO/IEC 646 Standard. Unix folgte der Multics -Praxis und später Unix-artig Systeme folgten Unix. Dies schuf Konflikte zwischen Windows und Unix-artig Betriebssysteme, wobei Dateien, die an einem Betriebssystem komponiert sind, nicht ordnungsgemäß von einem anderen Betriebssystem formatiert oder interpretiert werden können UNIX -Shell -Skript geschrieben in einem Windows -Texteditor wie Notizblock).

Darstellung

Die Konzepte von Kutschenrückkehr (CR) und Linienfutter (LF) sind eng miteinander verbunden und können entweder getrennt oder zusammen betrachtet werden. In den physischen Medien von Schreibmaschinen und Drucker, zwei Äxte von Bewegung, "unten" und "über" werden benötigt, um eine neue Linie auf dem zu erstellen Seite. Obwohl das Design einer Maschine (Schreibmaschine oder Drucker) sie separat berücksichtigen muss, kann die abstrakte Logik der Software sie als ein Ereignis kombinieren. Deshalb eine neue Linie in Zeichenkodierung kann definiert werden als CR und LF zu einem kombiniert (allgemein genannt CR+LF oder CRLF).

Etwas Zeichensätze Geben Sie einen separaten Newline -Zeichencode an. Ebcdicbietet zum Beispiel eine Nl Zeichencode zusätzlich zur Cr und Lf Codes. Unicodezusätzlich zur Bereitstellung der ASCII Cr und Lf Kontrollcodesbietet auch eine "nächste Zeile" (Nel) Kontrollcode sowie Steuercodes für "Zeilenabscheider" und "Absatzseparator" -Markierungen.

Softwareanwendungen und Betriebssystemdarstellung einer neuen Zeile mit einem oder zwei Steuerzeichen
Betriebssystem Zeichenkodierung Abkürzung verhexen Wert dez Wert Fluchtabfolge
Unix und Unix-artig Systeme (Linux, Mac OS, Freebsd, AIX, Xenix, etc.), Mehrheit, Beos, Amiga, RISC OS, und andere[3] ASCII Lf 0a 10 \n
Microsoft Windows, DOS (MS-DOS, PC dos, etc.), Atari Tos, Dez Tops-10, RT-11, CP/m, MP/m, OS/2, Symbian OS, Palm os, Amstrad CPCund die meisten anderen frühen Nicht-Unix- und Nicht-IBM-Betriebssysteme Cr lf 0d 0a 13 10 \ r \ n
Kommodore 8-Bit-Maschinen (C64, C128), Acorn BBC, ZX -Spektrum, TRS-80, Apple II -Serie, Oberon, das Klassischer Mac OS, MIT Lisp -Maschine und OS-9 Cr 0d 13 \r
Qnx Vor-Posix-Implementierung (Version <4) Rs 1E 30 \036
Acorn BBC[4] und RISC OS Spulentextausgabe[5] Lf cr 0a 0d 10 13 \ n \ r
Atari 8-Bit-Maschinen Atascii 9b 155
IBM Mainframe -Systeme, einschließlich Z/OS (OS/390) und Ibm i (OS/400)) Ebcdic Nl 15 21 \025
ZX80 und ZX81 (Heimcomputer von Sinclair Research Ltd)) verwendete einen bestimmten Nicht-ASCII-Zeichensatz NEUE ZEILE 76 118
  • Ebcdic Systeme - hauptsächlich IBM Mainframe -Systeme, einschließlich Z/OS (OS/390) und Ibm i (OS/400)-verwenden Nl (Neue Zeile, 0x15)[6] als Charakter, der die Funktionen von Linienfutter und Kutschenrückgabe kombiniert. Der äquivalente Unicode -Charakter (0x85) wird genannt Nel (Nächste Zeile). EBCDIC hat auch Kontrollzeichen genannt Cr und Lf, aber der numerische Wert von Lf ( 0x25) unterscheidet sich von der von ASCII (ASCII ( 0x0a). Zusätzlich verwenden einige Ebcdic -Varianten ebenfalls Nl Weisen Sie dem Zeichen jedoch einen anderen numerischen Code zu. Diese Betriebssysteme verwenden jedoch a Datensatzbasierte Dateisystem, der Textdateien als Datensatz pro Zeile gespeichert ist. In den meisten Dateiformaten werden tatsächlich keine Zeilenterminer gespeichert.
  • Betriebssysteme für die CDC 6000 -Serie definierte eine neue Zeile als zwei oder mehr Null-Wert-Sechs-Bit-Zeichen am Ende eines 60-Bit-Wortes. Einige Konfigurationen definierten auch einen Null-Wert-Zeichen als a Doppelpunkt Charakter, mit dem Ergebnis, dass mehrere Kolons je nach Position als Newline interpretiert werden konnten.
  • RSX-11 und OpenVMS Verwenden Sie auch ein rekordbasiertes Dateisystem, das Textdateien als Datensatz pro Zeile gespeichert ist. In den meisten Dateiformaten werden tatsächlich keine Zeilenterminer gespeichert, aber die Rekordverwaltungsdienste Die Einrichtung kann transparent einen Terminator zu jeder Zeile hinzufügen, wenn sie von einer Anwendung abgerufen wird. Die Datensätze selbst könnten dieselben Zeilen -Terminator -Zeichen enthalten, die je nach Anwendung entweder als Merkmal oder eine Belästigung angesehen werden können. RMS speicherte nicht nur Datensätze, sondern auch Metadaten über die Datensatzabschlüsse in verschiedenen Bits für die Datei, um die Angelegenheit noch mehr zu komplizieren ). Die Bits waren nicht allgemein, während sie das angeben konnten Cr Lf oder Lf oder auch Cr war der Zeilenterminator, es konnte keinen anderen Code ersetzen.
  • Länge feste Linienlänge wurde von einigen früh benutzt Mainframe Betriebssysteme. In einem solchen System wurde beispielsweise alle 72 oder 80 Zeichen ein implizites Zeilenende angenommen. Es wurde kein Newline -Charakter gespeichert. Wenn eine Datei aus der Außenwelt importiert wurde, mussten Linien kürzer als die Linienlänge mit Leerzeichen gepolstert werden, während die Linien länger als die Linienlänge abgeschnitten werden mussten. Dies ahmte die Verwendung von nachgeahmt geschlagene Kartenauf welcher Zeile wurde jede Zeile auf einer separaten Karte gespeichert, normalerweise mit 80 Spalten auf jeder Karte, häufig mit Sequenznummern in den Spalten 73–80. Viele dieser Systeme fügten a hinzu Kutschenkontrollcharakter zu Beginn der nächste Aufzeichnung; Dies könnte darauf hinweisen, ob der nächste Rekord eine Fortsetzung der Zeile war, die durch den vorherigen Datensatz gestartet wurde, oder eine neue Zeile, oder sollte die vorherige Zeile überdrucken (ähnlich wie a Cr). Oft war dies ein normaler Druckcharakter wie # Das konnte daher nicht als erster Zeichen in einer Zeile verwendet werden. Einige frühe Zeilendrucker interpretierten diese Zeichen direkt in den ihnen gesendeten Datensätzen.

Unicode

Das Unicode Standard definiert eine Reihe von Zeichen, die Anwendungen als Zeilenterminatoren anpassen sollten:[7]

  Lf:     Zeilenvorschub, U+000A
  Vt:     Vertikale Registerkarte, U+000B
  Ff:     Formfutter, U+000C
  Cr:     Kutschenrückkehr, U+000D
Cr+ Lf: Cr ( U+000D) gefolgt von Lf ( U+000A)
  Nel:    Nächste Zeile, U+0085
  Ls:     Linienabscheider, U+2028
  Ps:     Absatzabscheider, U+2029

Dies mag im Vergleich zu einem Ansatz übermäßig kompliziert erscheinen, z. B. beispielsweise alle Linienanschlüsse in ein einzelnes Zeichen Lf. Unicode wurde jedoch entwickelt, um alle Informationen beim Konvertieren einer Textdatei von vorhandener Codierung in Unicode und zurück zu erhalten. Daher sollte Unicode Zeichen enthalten, die in vorhandenen Codierungen enthalten sind.

Zum Beispiel: Nl ist ein Teil von Ebcdic, der Code verwendet 0x15; Es wird normalerweise Unicode zugeordnet Nel, 0x85, das ist ein Steuercharakter im C1 -Kontrollsatz.[8] Als solches wird es durch ECMA 48 definiert,[9] und anerkannt durch Codings, die mit entspricht ISO/IEC 2022 (Das entspricht ECMA 35).[10] Der C1 -Steuerungssatz ist auch mit kompatibel mit ISO-8859-1. Der im Unicode-Standard verfolgte Ansatz ermöglicht es, die Roundtrip-Transformation über Informationsversicherung zu sein und gleichzeitig die Anwendungen zu ermöglichen, alle möglichen Arten von Linienanschlüssen zu erkennen.

Erkennen und Verwenden der neuen Zeilencodes größer als 0x7f (Nel, Ls und Ps) wird nicht oft erledigt. Sie sind mehrere Bytes in UTF-8und der Code für Nel wurde als die verwendet Ellipse () Charakter in Windows-1252. Zum Beispiel:

  • ECMaskript Akzeptiert Ls und Ps als Linienbrecher,[11] aber überlegt U+0085 ( Nel) Whitespace anstelle eines Zeilenaufbruchs.[12]
  • Windows 10 behandelt keine von Nel, Ls, oder Ps als Zeilenaufschlüsse in seinem Standardtexteditor, Notizblock.
  • GEDIT, der Standard Texteditor des Gnom Desktop -Umgebung, Leckereien Ls und Ps als Newlines, aber nicht für Nel.
  • JSON[13] erlaubt Ls und Ps Zeichen innerhalb von Saiten, während ECMascript vor ES2019[14][15] behandelte sie als Newlines und daher illegale Syntax.[16]
  • Yaml[17] erkennt sie nicht mehr als speziell als Version 1.2, um miteinander kompatibel zu sein mit JSON.

Beachten Sie gut, dass die Unicode -Sonderzeichen U+2424 (Symbol für Newline, ), U+23ce (Rückgabesymbol, ), U+240d (Symbol für die Kutschenrendite, ) und U+240a (Symbol für Linienfutter, ) sind Glyphen Für die Präsentation eines benutzerfreundlichen Charakters dem Leser des Dokuments bestimmt und werden daher nicht als neue Zeile anerkannt.

In Programmiersprachen

Erleichterung der Schaffung von tragbar Programme, Programmiersprachen bieten einige Abstraktionen, um mit den verschiedenen Arten von Newline -Sequenzen umzugehen, die in verschiedenen Umgebungen verwendet werden.

Das C Programmiersprache Bietet die Fluchtsequenzen '\n' (Newline) und '\r' (Kutschenrendite). Diese müssen jedoch nicht dem ASCII entsprechen Lf und Cr Steuerzeichen. Der C -Standard garantiert nur zwei Dinge:

  1. Jede dieser Escape-Sequenzen karten zu einer eindeutigen implementierungsdefinierten Zahl, die in einem einzigen gespeichert werden kann verkohlen Wert.
  2. Beim Schreiben in eine Datei, einen Gerätknoten oder ein Socket/FIFO in Textmodus, '\n' wird transparent in die vom System verwendete native Newline -Sequenz übersetzt, die länger als ein Zeichen sein kann. Beim Lesen im Textmodus wird die native Newline -Sequenz wieder auf übersetzt '\n'. Im Binärmodus, es wird keine Übersetzung durchgeführt und die interne Darstellung von erzeugt von '\n' wird direkt ausgegeben.

Auf UNIX -Plattformen, auf denen C entstanden ist, ist die native Newline -Sequenz ASCII Lf (0x0a), Also '\n' wurde einfach als dieser Wert definiert. Da die interne und externe Darstellung identisch ist, ist die im Textmodus durchgeführte Übersetzung a No-opund Unix hat keinen Vorstellung vom Textmodus oder des Binärmodus. Dies hat dazu geführt, dass viele Programmierer, die ihre Software auf UNIX -Systemen entwickelt haben, einfach die Unterscheidung vollständig ignorieren, was zu Code führt, der für verschiedene Plattformen nicht tragbar ist.

Die C -Bibliotheksfunktion fgets() wird am besten im Binärmodus vermieden, da jede Datei, die nicht mit der Unix Newline Convention geschrieben wurde, falsch verstanden wird. Im Textmodus wird auch jede Datei, die nicht mit der nativen Newline -Sequenz des Systems geschrieben wurde (z.

Ein weiteres häufiges Problem ist die Verwendung von '\n' Bei der Kommunikation mit einem Internetprotokoll, das die Verwendung von ASCII vorschreibt Cr+Lf zum Ende von Linien. Schreiben '\n' In einem Textmodus funktioniert Stream korrekt unter Windows -Systemen, produziert jedoch nur Lf auf Unix und etwas völlig anderes auf exotischeren Systemen. Verwendung "\ r \ n" Im Binärmodus ist etwas besser.

Viele Sprachen, wie z. C ++, Perl,[18] und Haskell die gleiche Interpretation geben '\n' Wie C. c ++ eine hat Alternatives E/A -Modell wo der Manipulator std :: endl Kann verwendet werden, um eine neue Linie auszugeben (und den Stream -Puffer zu spülen).

Java, Php,[19] und Python[20] zur Verfügung stellen '\ r \ n' Sequenz (für ASCII Cr+Lf). Im Gegensatz zu C repräsentieren diese die Werte garantiert U+000D und U+000A, beziehungsweise.

Die Java-E/A-Bibliotheken übersetzen diese nicht transparent in plattformabhängige Newline-Sequenzen für Eingabe oder Ausgabe. Stattdessen bieten sie Funktionen für das Schreiben einer vollständigen Zeile, die automatisch die native Newline -Sequenz hinzufügt, und Funktionen für das Lesen von Zeilen, die eine akzeptieren Cr, Lf, oder Cr+Lf als Linien -Terminator (siehe BufferedReader.readline ()). Das System.lineseParator () Methode kann verwendet werden, um den zugrunde liegenden Linienabscheider abzurufen.

Beispiel:

  Saite Eol = System.LineSeparator();  Saite Linienfarbe = "Farbe Rot" + Eol; 

Python erlaubt "Universal Newline Support" beim Öffnen einer Datei zum Lesen, beim Importieren von Modulen und beim Ausführen einer Datei.[21]

Einige Sprachen haben Special geschaffen Variablen, Konstanten, und Unterroutinen Neuleitungen während der Programmausführung zu erleichtern. In einigen Sprachen wie z. Php und Perl, Anführungszeichen sind erforderlich, um eine Fluchtsubstitution für alle Escape -Sequenzen durchzuführen, einschließlich '\n' und '\r'. Um Portabilitätsprobleme zu vermeiden, sollten in PHP Newline -Sequenzen unter Verwendung der PHP_EOL -Konstante ausgestellt werden.[22]

Beispiel in C#:

  Saite Eol = Umfeld.Neue Zeile;  Saite Linienfarbe = "Farbe Rot" + Eol;      Saite EOL2 = "\n";  Saite Linecolor2 = "Farbe blau" + EOL2; 

Probleme mit verschiedenen Newline -Formaten

A Textdatei hergestellt mit GEDIT und mit a gesehen Hex -Editor. Neben den Textobjekten gibt es nur EOL -Marker mit dem hexadezimal Wert 0a.

Die verschiedenen Newline -Konventionen verursachen Textdateien, die zwischen Systemen verschiedener Typen übertragen wurden, die falsch angezeigt werden.

Text in Dateien, die mit Programmen erstellt wurden, die gemeinsam sind Unix-artig oder Klassischer Mac OS, erscheinen als eine einzige lange Linie für die meisten Programme, die gemeinsam sind MS-DOS und Microsoft Windows Weil diese keine einzelne anzeigen line feed oder eine einzige carriage return als Linienpause.

Umgekehrt, wenn eine Datei angezeigt wird, die von einem Windows-Computer auf einem Unix-ähnlichen System stammt, ist das Extra umgekehrt Cr kann als zweite Zeilenpause angezeigt werden ^M, oder as am Ende jeder Zeile.

Darüber hinaus akzeptieren andere Programme als Textredakteure möglicherweise keine Datei, z. Einige Konfigurationsdateien, die mit der Fremd Newline Convention als gültige Datei codiert werden.

Das Problem kann schwer zu erkennen sein, da einige Programme die ausländischen Neulinge ordnungsgemäß behandeln, während andere dies nicht tun. Zum Beispiel a Compiler kann mit obskuren Syntaxfehlern fehlschlagen, obwohl die Quelldatei bei der angezeigten Anlage korrekt aussieht Konsole oder in an Editor. Moderne Textredakteure erkennen im Allgemeinen alle Aromen von Aromen von Cr+Lf Neulinien und ermöglichen es Benutzern, zwischen den verschiedenen Standards umzuwandeln. Internetbrowser sind normalerweise auch in der Lage, Textdateien und Websites anzuzeigen, die verschiedene Arten von Neulinen verwenden.

Auch wenn ein Programm verschiedene neue Konventionen für neue Linien unterstützt, werden diese Funktionen häufig nicht ausreichend gekennzeichnet, beschrieben oder dokumentiert. In der Regel wird ein Menü oder eine Kombination, die verschiedene neue Konventionen auflistet, ohne Hinweis auf die Benutzer angezeigt, wenn die Auswahl die Newlines neu interpretiert, vorübergehend konvertieren oder dauerhaft konvertiert. Einige Programme werden implizit offen umgesetzt, kopieren, einfügen oder speichern - oft inkonsistent.

Am textlichsten Internet Protokolle (einschließlich Http, SMTP, Ftp, IRCund viele andere) mandatieren die Verwendung von ASCII Cr+Lf ('\ r \ n', 0x0d 0x0a) auf der Protokollebene, empfehlen Sie jedoch, dass tolerante Anwendungen einsam erkennen Lf ('\n', 0x0a) auch. Trotz des diktierten Standards verwenden viele Anwendungen fälschlicherweise die C Newline Escape -Sequenz '\n' (Lf) Anstelle der korrekten Kombination der Kutschenrückgabe -Flucht- und Newline -Fluchtsequenzen '\ r \ n' (Cr+Lf) (siehe Sektion Newline in Programmiersprachen Oben). Diese zufällige Verwendung der falschen Escape -Sequenzen führt zu Problemen, wenn versucht wird, mit Systemen zu kommunizieren, die an der strengeren Interpretation der Standards anstelle der vorgeschlagenen toleranten Interpretation haften. Ein solches intolerantes System ist das qmail Mail Transfer Agent Das weigert sich aktiv, Nachrichten von Systemen zu akzeptieren, die bloß senden Lf statt der erforderlichen Cr+Lf.[23]

Das Standard -Internet -Nachrichtenformat[24] Für E -Mail -Staaten: "CR und LF dürfen nur zusammen als CRLF auftreten; sie dürfen nicht unabhängig im Körper erscheinen."

Das Dateitransferprotokoll kann Newlines automatisch in Dateien umwandeln, die zwischen übertragen werden Systeme mit verschiedenen Newline -Darstellungen, wenn die Übertragung im "ASCII -Modus" durchgeführt wird. Die Übertragung von Binärdateien in diesem Modus hat jedoch normalerweise katastrophale Ergebnisse: jegliches Auftreten der Newline -Byte -Sequenz - die in diesem Zusammenhang keine Zeilen -Terminator -Semantik aufweist, sondern nur Teil einer normalen Abfolge von Bytes ist - wird in eine neue Darstellung übersetzt werden das andere System verwendet effektiv Verderben die Datei. FTP -Kunden beschäftigen oft einige Heuristik (Zum Beispiel Inspektion von Dateiname -Erweiterungen) Um automatisch entweder den Binär- oder den ASCII -Modus auszuwählen, aber am Ende liegt es an den Benutzern, sicherzustellen, dass ihre Dateien im richtigen Modus übertragen werden. Wenn der richtige Modus Zweifel gibt, sollte der Binärmodus verwendet werden, da keine Dateien von FTP geändert werden, obwohl sie möglicherweise falsch angezeigt werden.[25]

Konvertierung zwischen Newline -Formaten

Textredakteure werden häufig zum Konvertieren einer Textdatei zwischen verschiedenen Newline -Formaten verwendet; Die meisten modernen Redakteure können Dateien mit mindestens den verschiedenen ASCII lesen und schreiben Cr/Lf Konventionen.

Zum Beispiel der Herausgeber Vim Kann eine Datei mit dem Windows Notepad Texteditor kompatibel machen. Innerhalb von Vim

:einstellen Datei Format=dos:wq 

Die Redakteure können für die Konvertierung größerer Dateien oder zur Konvertierung vieler Dateien ungeeignet sein. Für größere Dateien (unter Windows NT/2000/XP) wird häufig der folgende Befehl verwendet:

D: \>TYP UNIX_FILE | Finden Sie /v "" " > dos_file

Zu den speziellen Zweckprogrammen zum Konvertieren von Dateien zwischen verschiedenen neuen Konventionen gehören UNIX2DOS und dos2unix, Mac2unix und UNIX2MAC, Mac2dos und DOS2MAC, und Flip.[26] Das tr Der Befehl ist praktisch alle verfügbar Unix-artig System und kann verwendet werden, um beliebige Ersatzvorgänge für einzelne Zeichen durchzuführen. Eine DOS/Windows -Textdatei kann in das UNIX -Format konvertiert werden, indem einfach alle ASCII entfernen Cr Charaktere mit

$ tr -d '\ r' < Eingabedatei > Ausgabedatei 

oder wenn der Text nur hat Cr Newlines, indem sie alle konvertieren Cr Newlines zu Lf mit

$ tr '\ r' '\ n' < Eingabedatei > Ausgabedatei 

Die gleichen Aufgaben werden manchmal mit ausgeführt awk, sed, oder in Perl Wenn die Plattform einen Perl -Dolmetscher hat:

$ awk '{sub ("$", "\ r \ n"); printf ("%s", $ 0);} ' InputFile> OutputFile # UNIX to DOS (Hinzufügen von CRS auf Linux- und BSD -basiertem Betriebssystem, die keine GNU -Erweiterungen haben) $ awk '{gsub ("\ r", ""); drucken;}' InputFile> OutputFile # Dos zu Unix (Entfernen von CRS auf Linux- und BSD -basiertem Betriebssystem, die keine GNU -Erweiterungen haben) $ sed -e 's/$/\ r/' ' InputFile> OutputFile # UNIX zu DOS (Hinzufügen von CRS auf Linux -basiertem Betriebssystem, das GNU -Erweiterungen verwendet) $ sed -e 's/\ r $ //' ' InputFile> OutputFile # DOS zu Unix (Entfernen von CRS auf Linux -basiertem Betriebssystem, die GNU -Erweiterungen verwenden) $ Perl -Pe 's/\ r? \ n | \ r/\ r \ n/g' InputFile> OutputFile # Zu DOS konvertieren $ Perl -Pe 's/\ r? \ n | \ r/\ n/g'   InputFile> OutputFile # Zu Unix konvertieren $ Perl -Pe 's/\ r? \ n | \ r/\ r/g'   InputFile> OutputFile # Konvertieren Sie zum alten Mac 

Das Datei Der Befehl kann die Art der Zeilenende identifizieren:

 $ Datei myFile.txt myFile.txt: ASCII Englischer Text mit CRLF -Zeilenterminatoren 

Die Unix Egrep (Extended GREP) Befehl kann verwendet werden, um Dateinamen von UNIX- oder DOS-Dateien zu drucken (unter der Annahme von UNIX- und DOS-Style-Dateien, keine klassischen Mac OS-Style-Dateien):

$ Egrep -l '\ r \ n' myFile.txt # UNIX -Style -Datei anzeigen (LF beendet) $ Egrep -l '\ r \ n' myFile.txt # DOS -Style -Datei anzeigen (CRLF beendet) 

Andere Tools ermöglichen es dem Benutzer, die EOL -Zeichen zu visualisieren:

$ od -a myfile.txt$ cat -e myfile.txt$ cat -v myfile.txt$ hexdump -c myfile.txt

Deutung

Zwei Möglichkeiten, Newlines anzusehen, die beide sind selbstkonsistentsind diese Neulinge auch getrennt Zeilen oder dass sie kündigen Linien. Wenn eine neue Linie als Trennzeichen betrachtet wird, gibt es nach der letzten Zeile einer Datei keine neue Zeile. Einige Programme haben Probleme, die letzte Zeile einer Datei zu verarbeiten, wenn sie nicht von einer neuen Linie beendet wird. Auf der anderen Seite interpretieren Programme, die die Verwendung von Newline als Trennzeichen verwenden, eine endgültige neue Linie als Start einer neuen (leeren) Linie. Wenn eine neue Linie als Terminator betrachtet wird, werden alle Textzeilen, einschließlich der letzten, von einer neuen Linie erwartet. Wenn die endgültige Zeichensequenz in einer Textdatei keine neue Zeile ist, kann die endgültige Zeile der Datei als unvollständige oder unvollständige Textzeile angesehen werden, oder die Datei kann als nicht ordnungsgemäß abgeschnitten angesehen werden.

Im Text, der in erster Linie von Menschen mithilfe von Software gelesen werden soll, die das implementiert Zeilenumbruch Feature, ein Newline -Charakter muss normalerweise nur gespeichert werden Absätze und in vertikalen Listen. Daher in der Logik von Textverarbeitung Und die meisten Textredakteure, Newline wird als verwendet Absatzpause und ist im Gegensatz zu "Softrenditen" als "harte Rendite" bekannt, die dynamisch erstellt werden, um eine Wortverpackung zu implementieren und mit jeder Anzeigeinstanz veränderlich zu sein. In vielen Anwendungen ein separates Steuerzeichen Das genannte "manuelle Linienbrecher" gibt es, um Linienbrüche in einem einzigen Absatz zu erzwingen. Das Glyphe Für das Steuercharakter für eine harte Rückkehr ist normalerweise a Pilcrow (¶), und für die manuelle Linienpause ist normalerweise ein Wagenrückgabepfeil (↵).

Rückwärts- und Teilleitungseinführungen

Ri, (U+008d Reverse Line Feed,[27] ISO/IEC 6429 8d, Decimal 141) wird verwendet, um die Druckposition um eine Zeile zurückzuschieben (indem sie das Papier umgekehrt oder durch Verschieben eines Display -Cursors eine Zeile nach oben verschieben), damit andere Zeichen über vorhandenen Text gedruckt werden können. Dies kann getan werden, um sie mutiger zu machen oder Untersteinungen, Throughs oder andere Charaktere wie z. Diakritik.

Ähnlich, PLD (U+008B Teillinie vorwärts, Dezimalheit 139) und Plu (U+008c partielle Linie rückwärts, Decimal 140) kann verwendet werden, um die Textdruckposition durch einen Bruchteil des vertikalen Linienabstands voranzutreiben oder umzukehren (typischerweise halb). Diese können in Kombination für Indexs (durch Fortschreiten und Umkehrung) und Superscripts (durch Umkehrung und Anschließend) verwendet werden und können auch zum Drucken von Diakritika nützlich sein.

Siehe auch

Verweise

  1. ^ "Was ist eine neue Linie?". www.computerhope.com. Abgerufen 10. Mai 2021.
  2. ^ Qualline, Steve (2001). VI verbessert - vim (PDF). Sams. p. 120. ISBN 9780735710016.
  3. ^ "ASCII -Diagramm".
  4. ^ Bray, Andrew C.; Dickens, Adrian C.; Holmes, Mark A. (1983). Die erweiterte Benutzerhandbuch für den BBC -Mikrocomputer (PDF). S. 103, 104. ISBN 978-0946827008. Abgerufen 30. Januar 2019.
  5. ^ "RISC OS 3 Programmierer Referenzhandbuch". Abgerufen 18. Juli 2018.
  6. ^ IBM System/360 Referenzdatenkarte, Veröffentlichung GX20-1703, IBM Data Processing Division, White Plains, NY
  7. ^ "UAX #14: Unicode Line Breaking -Algorithmus". www.unicode.org.
  8. ^ "C1 -Steuerungszeichen von ISO 6429" (PDF). ITSCJ. Ipsj. 1. Oktober 1983. Abgerufen 3. März 2022.
  9. ^ Kontrollfunktionen für codierte Zeichensätze (PDF) (Bericht). ECMA International. Juni 1991.
  10. ^ Charaktercode -Struktur und Erweiterungstechniken (PDF) (Bericht) (6. Aufl.). ECMA International. Dezember 1994.
  11. ^ "ECMascript 2019 Sprachspezifikation". ECMA International. Juni 2019. 11.3 Zeilenterminatoren.
  12. ^ "ECMascript 2019 Sprachspezifikation". ECMA International. Juni 2019. 11.2 Weißraum.
  13. ^ Bray, Tim (März 2014). "Das JavaScript -Objektnotationsformat (JSON) Data Interchange -Format". 7. Saiten. RFC 7159. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  14. ^ "Subume JSON (a.k.a. json ⊂ ecmascript)". GitHub. 22. Mai 2018.
  15. ^ "ECMascript 2019 Sprachspezifikation". ECMA International. Juni 2019. 11.8.4 String -Literale.
  16. ^ "ECMascript 2018 Sprachspezifikation". ECMA International. Juni 2018. 11.8.4 String -Literale.
  17. ^ "Yaml ist nicht Markup Language (YAML) Version 1.2". yaml.org. 5.4. Zeilenpausenzeichen.
  18. ^ "Binmode - PERLDOC.PERL.ORG". perldoc.perl.org.
  19. ^ "PHP: Zeichenfolgen - Handbuch". www.php.net.
  20. ^ "Lexikalanalyse - Python v3.0.1 Dokumentation". docs.python.org.
  21. ^ "Was ist neu in Python 2.3".
  22. ^ "PHP: Vordefinierte Konstanten - Handbuch". www.php.net.
  23. ^ "cr.yp.to".
  24. ^ Resnick, Pete (April 2001). "RFC 2822 - Internet -Nachrichtenformat". Die Internet Engineering Task Force.
  25. ^ "Datei Übertragung". Im Zweifelsfall übertragen Sie im Binärmodus.
  26. ^ "ASCII-Textumwandlung zwischen UNIX, Macintosh, MS-DOS". Archiviert von das Original am 9. Februar 2009.
  27. ^ "C1-Kontrollen und Latein-1-Supplement" (PDF). unicode.org. Abgerufen 13. Februar 2016.

Externe Links