De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

Nueva línea insertada entre las palabras "Hola" y "mundo"

Newline (frecuentemente llamado final de línea , final de línea ( EOL ), avance de línea , o salto de línea ) es un carácter de control o secuencia de caracteres de control en una codificación de caracteres especificación (por ejemplo ASCII o EBCDIC ) que se utiliza para indicar el final de una línea de texto y el comienzo de una nueva. [1] Algunos editores de texto establecen este carácter especial al presionar la tecla.Enter

Al mostrar (o imprimir) un archivo de texto , este carácter de control hace que el editor de texto muestre los siguientes caracteres en una nueva línea.

Historia [ editar ]

A mediados de la década de 1800, mucho antes del advenimiento de los teletipos y las máquinas de teletipo, los operadores de código Morse o telegrafistas inventaron y utilizaron prosignos de código Morse para codificar el formato de texto de espacios en blanco en mensajes de texto formales escritos. En particular, el prosign de Morse BT (mnemónico b reak t ext) representado por la concatenación de los códigos Morse textuales literales "B" y los caracteres "T" enviados sin el espaciado normal entre caracteres se utiliza en código Morse para codificar e indicar una nueva línea. o nueva sección en un mensaje de texto formal.

Más tarde, en la era de los teletipos modernos , se desarrollaron códigos de control de juego de caracteres estandarizados para ayudar en el formateo de texto en espacios en blanco. ASCII fue desarrollado simultáneamente por la Organización Internacional de Normalización (ISO) y la Asociación Estadounidense de Normas (ASA), siendo esta última la organización predecesora del Instituto Nacional Estadounidense de Normas (ANSI). Durante el período de 1963 a 1968, los borradores de normas ISO apoyaron el uso de CR + LF o LF solo como una nueva línea, mientras que los borradores de ASA solo respaldaron CR + LF .

La secuencia CR + LF se usaba comúnmente en muchos de los primeros sistemas informáticos que habían adoptado máquinas de teletipo , generalmente un ASR de teletipo modelo 33 , como dispositivo de consola, porque esta secuencia era necesaria para colocar esas impresoras al comienzo de una nueva línea. La separación de la nueva línea en dos funciones ocultó el hecho de que el cabezal de impresión no podía regresar desde el extremo derecho al principio de la siguiente línea a tiempo para imprimir el siguiente carácter. Cualquier carácter impreso después de un CR solía imprimirse como una mancha en el medio de la página mientras el cabezal de impresión todavía estaba moviendo el carro de regreso a la primera posición. "La solución fue hacer que el salto de línea tenga dos caracteres: CRpara mover el carro a la columna uno, y LF para mover el papel hacia arriba ". [2] De hecho, a menudo era necesario enviar caracteres extra (CR o NUL extraños) que se ignoran pero dan tiempo al cabezal de impresión para moverse al Margen izquierdo Muchas pantallas de video tempranas también requerían múltiples caracteres para desplazarse por la pantalla.

En tales sistemas, las aplicaciones tenían que comunicarse directamente con la máquina Teletipo y seguir sus convenciones, ya que el concepto de controladores de dispositivos que ocultaban los detalles del hardware de la aplicación aún no estaba bien desarrollado. Por lo tanto, el texto se redactaba de forma rutinaria para satisfacer las necesidades de las máquinas de teletipo. La mayoría de los sistemas de minicomputadoras de DEC utilizaron esta convención. CP / M también lo usó para imprimir en los mismos terminales que usaban las minicomputadoras. De ahí MS-DOS (1981) adoptaron CP / M 's CR + LF con el fin de ser compatibles, y esta convención fue heredado por posterior de Microsoft de Windows sistema operativo.

El sistema operativo Multics comenzó a desarrollarse en 1964 y usaba LF solo como su nueva línea. Multics utilizó un controlador de dispositivo para traducir este carácter a cualquier secuencia que necesite una impresora (incluidos caracteres de relleno adicionales), y el byte único fue más conveniente para la programación. Lo que parece una opción más obvia [ cita requerida ] - CR - no se usó, ya que CR proporcionó la función útil de sobreimprimir una línea con otra para crear efectos en negrita y tachado . Quizás lo más importante es que el uso de LF solo como terminador de línea ya se había incorporado en los borradores del eventualNorma ISO / IEC 646 . Unix siguió la práctica de Multics, y más tarde los sistemas similares a Unix siguieron a Unix. Esto creó conflictos entre Windows y los sistemas operativos similares a Unix , por lo que los archivos compuestos en un sistema operativo no pueden ser formateados o interpretados correctamente por otro sistema operativo (por ejemplo, un script de shell de UNIX escrito en un editor de texto de Windows como el Bloc de notas ).

Representación [ editar ]

Los conceptos de retorno de carro (CR) y salto de línea (LF) están estrechamente asociados y pueden considerarse por separado o juntos. En los medios físicos de las máquinas de escribir y las impresoras , se necesitan dos ejes de movimiento, "hacia abajo" y "a través", para crear una nueva línea en la página . Aunque el diseño de una máquina (máquina de escribir o impresora) debe considerarlos por separado, la lógica abstracta del software puede combinarlos en un solo evento. Esta es la razón por la que una nueva línea en la codificación de caracteres se puede definir como CRy LFcombinar en una (comúnmente llamada CR+LFo CRLF).

Algunos juegos de caracteres proporcionan un código de carácter de nueva línea independiente. EBCDIC , por ejemplo, proporciona un código de carácter NL además de los códigos CR y LF . Unicode , además de proporcionar los códigos de control ASCII CR y LF , también proporciona un código de control de "línea siguiente" ( NEL ), así como códigos de control para marcadores de "separador de línea" y "separador de párrafo".

  • Los sistemas EBCDIC , principalmente los sistemas mainframe de IBM , incluidos z / OS ( OS / 390 ) e IBM i ( OS / 400 ), utilizan NL (Nueva línea, 0x15 ) [6] como el carácter que combina las funciones de avance de línea y retorno de carro. El carácter Unicode equivalente ( ) se llama NEL (Next Line). EBCDIC también tiene caracteres de control llamados CR y LF , pero el valor numérico de LF ( 0x25 ) difiere del utilizado por ASCII ( 0x0A ). Además, algunas variantes de EBCDIC también usan NL0x85pero asigne un código numérico diferente al carácter. Sin embargo, esos sistemas operativos utilizan un sistema de archivos basado en registros , que almacena archivos de texto como un registro por línea. En la mayoría de los formatos de archivo, no se almacenan terminadores de línea.
  • Los sistemas operativos de la serie CDC 6000 definieron una nueva línea como dos o más caracteres de seis bits con valor cero al final de una palabra de 60 bits. Algunas configuraciones también definieron un carácter de valor cero como un carácter de dos puntos , con el resultado de que varios dos puntos podrían interpretarse como una nueva línea según la posición.
  • RSX-11 y OpenVMS también utilizan un sistema de archivos basado en registros, que almacena archivos de texto como un registro por línea. En la mayoría de los formatos de archivo, no se almacenan terminadores de línea, pero los servicios de administración de registrosLa instalación puede agregar de forma transparente un terminador a cada línea cuando es recuperada por una aplicación. Los propios registros podrían contener los mismos caracteres de terminación de línea, lo que podría considerarse una característica o una molestia según la aplicación. RMS no solo almacenó registros, sino que también almacenó metadatos sobre los separadores de registros en diferentes bits para que el archivo complicara aún más las cosas (dado que los archivos podían tener registros de longitud fija, registros que tenían como prefijo un recuento o registros que terminaban con un carácter específico ). Los bits no eran genéricos, por lo que si bien podían especificar que CR LF o LF o incluso CR era el terminador de línea, no podía sustituir a ningún otro código.
  • La longitud de línea fija fue utilizada por algunos de los primeros sistemas operativos de mainframe . En tal sistema, se asumió un final de línea implícito cada 72 u 80 caracteres, por ejemplo. No se almacenó ningún carácter de nueva línea. Si se importaba un archivo del mundo exterior, las líneas más cortas que la longitud de la línea tenían que rellenarse con espacios, mientras que las líneas más largas que la línea tenían que ser truncadas. Esto imitó el uso de tarjetas perforadas , en las que cada línea se almacenaba en una tarjeta separada, generalmente con 80 columnas en cada tarjeta, a menudo con números de secuencia en las columnas 73–80. Muchos de estos sistemas agregaron un carácter de control de carro al inicio de la siguienteregistro; esto podría indicar si el siguiente registro era una continuación de la línea iniciada por el registro anterior, o una nueva línea, o debería sobreimprimir la línea anterior (similar a un CR ). A menudo, se trataba de un carácter de impresión normal, por lo que no se podía utilizar como primer carácter de una línea. Algunos impresores de líneas tempranas interpretaron estos caracteres directamente en los registros que se les enviaron.#

Unicode [ editar ]

El estándar Unicode define una serie de caracteres que las aplicaciones conformes deben reconocer como terminadores de línea: [7]

 LF : salto de línea, U + 000A   
 VT : Lengüeta vertical , U + 000B   
 FF : Form Feed , U + 000C   
 CR : retorno de carro , U + 000D   
 CR + LF : CR ( U + 000D ) seguido de LF ( U + 000A )
 NEL :Próxima línea, U + 0085  
 LS :Separador de línea, U + 2028   
 PD :Separador de párrafos, U + 2029   

Esto puede parecer demasiado complicado en comparación con un enfoque como convertir todos los terminadores de línea en un solo carácter, por ejemplo, LF . Sin embargo, Unicode fue diseñado para preservar toda la información al convertir un archivo de texto de cualquier codificación existente a Unicode y viceversa. Por lo tanto, Unicode debe contener caracteres incluidos en codificaciones existentes.

Por ejemplo: NL es parte de EBCDIC , que usa el código 0x15 ; normalmente se asigna a Unicode NEL , 0x85 , que es un carácter de control en el conjunto de controles C1. [8] Como tal, está definido por ECMA 48, [9] y reconocido por codificaciones que cumplen con ISO / IEC 2022 (que es equivalente a ECMA 35). [10] El conjunto de control C1 también es compatible con ISO-8859-1 . [ cita requerida ] El enfoque adoptado en el estándar Unicode permite que la transformación de ida y vuelta conserve la información al mismo tiempo que permite que las aplicaciones reconozcan todos los tipos posibles de terminadores de línea.

El reconocimiento y el uso de códigos de nueva línea superiores a 0x7F ( NEL , LS y PS ) no se suelen realizar. Son varios bytes en UTF-8 y el código para NEL se ha utilizado como el carácter de puntos suspensivos ( ) en Windows-1252 . Por ejemplo:

  • ECMAScript acepta LS y PS como saltos de línea, [11] pero considera espacios en blanco U + 0085 ( NEL ) en lugar de un salto de línea. [12]
  • Windows 10 no trata ninguno de NEL , LS o PS como saltos de línea en su editor de texto predeterminado, el Bloc de notas .
  • gedit , el editor de texto predeterminado del entorno de escritorio GNOME , trata LS y PS como líneas nuevas, pero no para NEL .
  • JSON [13] permite caracteres LS y PS dentro de cadenas, mientras que ECMAScript antes de ES2019 [14] [15] los trataba como líneas nuevas y, por lo tanto, sintaxis ilegal. [dieciséis]
  • YAML [17] ya no los reconoce como especiales a partir de la versión 1.2, para que sean compatibles con JSON .

Tenga en cuenta que los caracteres especiales Unicode U + 2424 ( SYMBOL FOR NEWLINE , ), U + 23CE ( RETURN SYMBOL , ), U + 240D ( SYMBOL FOR CARRIAGE RETURN , ) y U + 240A ( SYMBOL FOR LINE FEED , ) son glifos destinados para presentar un carácter visible para el usuario al lector del documento y, por lo tanto, no se reconocen como una nueva línea.

Secuencias de escape [ editar ]

Una secuencia de escape es una combinación de caracteres que no representa texto; en lugar de mostrarse (como texto), se supone que el programa lo intercepta y se supone que debe realizar una función especial. Las secuencias de escape también se utilizan para manejar (establecer, buscar, reemplazar, etc.) caracteres especiales.

En lenguajes de programación [ editar ]

Para facilitar la creación de programas portátiles , los lenguajes de programación proporcionan algunas abstracciones para tratar los diferentes tipos de secuencias de nueva línea utilizadas en diferentes entornos.

El lenguaje de programación C proporciona las secuencias de escape '\ n' (nueva línea) y '\ r' (retorno de carro). Sin embargo, no es necesario que sean equivalentes a los caracteres de control ASCII LF y CR . El estándar C solo garantiza dos cosas:

  1. Cada una de estas secuencias de escape se asigna a un número único definido por la implementación que se puede almacenar en un solo valor de carácter .
  2. Cuando se escribe en un archivo, nodo de dispositivo o socket / FIFO en modo texto , '\ n' se traduce de forma transparente a la secuencia de nueva línea nativa utilizada por el sistema, que puede tener más de un carácter. Al leer en modo texto, la secuencia nativa de nueva línea se traduce de nuevo a '\ n' . En modo binario , no se realiza ninguna traducción y la representación interna producida por '\ n' se emite directamente.

En las plataformas Unix, donde se originó C, la secuencia nativa de nueva línea es ASCII LF ( 0x0A ), por lo que '\ n' simplemente se definió como ese valor. Con la representación interna y externa es idéntica, la traducción realizada en modo texto es un no-op , y Unix no tiene noción de modo de texto o en modo binario. Esto ha provocado que muchos programadores que desarrollaron su software en sistemas Unix simplemente ignoren la distinción por completo, lo que ha dado como resultado un código que no es portátil para diferentes plataformas.

Es mejor evitar la función de biblioteca C fgets () en modo binario porque cualquier archivo que no esté escrito con la convención de nueva línea de Unix se leerá mal. Además, en el modo de texto, cualquier archivo que no se haya escrito con la secuencia de nueva línea nativa del sistema (como un archivo creado en un sistema Unix y luego copiado en un sistema Windows) también se leerá mal.

Otro problema común es el uso de '\ n' cuando se comunica mediante un protocolo de Internet que exige el uso de ASCII CR + LF para las líneas finales. Escribir '\ n' en una secuencia en modo texto funciona correctamente en sistemas Windows, pero solo produce LF en Unix y algo completamente diferente en sistemas más exóticos. Usar "\ r \ n" en modo binario es un poco mejor.

Muchos lenguajes, como C ++ , Perl , [18] y Haskell proporcionan la misma interpretación de '\ n' que C. C ++ tiene un modelo de E / S alternativo donde el manipulador std :: endl puede usarse para generar una nueva línea (y vacía el búfer de flujo).

Java , PHP , [19] y Python [20] proporcionan la secuencia '\ r \ n' (para ASCII CR + LF ). A diferencia de C, se garantiza que estos representan los valores U + 000D y U + 000A , respectivamente.

Las bibliotecas de E / S de Java no las traducen de forma transparente en secuencias de nueva línea dependientes de la plataforma en la entrada o salida. En su lugar, proporcionan funciones para escribir una línea completa que agrega automáticamente la secuencia nativa de nueva línea y funciones para leer líneas que aceptan cualquiera de CR , LF o CR + LF como terminador de línea (consulte BufferedReader.readLine () ). El método System.lineSeparator () se puede utilizar para recuperar el separador de línea subyacente.

Ejemplo:

 String  eol  =  Sistema . lineSeparator ();  String  lineColor  =  "Color: Rojo"  +  eol ;

Python permite "Universal Newline Support" al abrir un archivo para leerlo, al importar módulos y al ejecutar un archivo. [21]

Algunos lenguajes han creado variables , constantes y subrutinas especiales para facilitar nuevas líneas durante la ejecución del programa. En algunos lenguajes como PHP y Perl , se requieren comillas dobles para realizar la sustitución de escape para todas las secuencias de escape, incluidas '\ n' y '\ r' . En PHP, para evitar problemas de portabilidad, las secuencias de nueva línea deben emitirse utilizando la constante PHP_EOL. [22]

Ejemplo en C # :

 string  eol  =  Medio ambiente . NewLine ;  string  lineColor  =  "Color: Rojo"  +  eol ;  string  eol2  =  "\ n" ;  string  lineColor2  =  "Color: Azul"  +  eol2 ;

Problemas con diferentes formatos de nueva línea [ editar ]

Un archivo de texto creado con gedit y visualizado con un editor hexadecimal . Además de los objetos de texto, solo hay marcadores EOL con el valor hexadecimal 0A.

Aunque los caracteres de control se definen de forma inequívoca en la tabla de codificación de caracteres correspondiente utilizada por un archivo de texto, todavía hay un problema: existen diferentes convenciones para establecer y mostrar un salto de línea.

Para denotar un solo salto de línea, los programas Unix usan line feed, cuyo valor hexadecimal en ASCII es 0a, mientras que la mayoría de los programas comunes a MS-DOS y Microsoft Windows usan carriage return+ line feed, cuyo valor hexadecimal en ASCII es 0d 0a. En ASCII, el retorno de carro es un carácter de control distinto.

Las diferentes convenciones de nueva línea hacen que los archivos de texto que se han transferido entre sistemas de diferentes tipos se muestren incorrectamente.

El texto de los archivos creados con programas que son comunes en Mac OS clásico o similar a Unix , aparece como una sola línea larga en la mayoría de los programas comunes a MS-DOS y Microsoft Windows porque estos no muestran un solo o un solo como un salto de línea.line feedcarriage return

Por el contrario, al visualizar un archivo que se origina en una computadora con Windows en un sistema similar a Unix, el CR adicional puede mostrarse como un segundo salto de línea, como ^ M o como <cr> al final de cada línea.

Además, los programas que no sean editores de texto pueden no aceptar un archivo, por ejemplo, algún archivo de configuración, codificado usando la convención de nueva línea foránea, como un archivo válido.

El problema puede ser difícil de detectar porque algunos programas manejan correctamente las nuevas líneas externas mientras que otros no. Por ejemplo, un compilador puede fallar con errores de sintaxis oscuros aunque el archivo fuente parezca correcto cuando se muestra en la consola o en un editor . En un sistema similar a Unix, el comando cat -v myfile.txt enviará el archivo a stdout (normalmente la terminal) y hará que ^ M sea visible, lo que puede ser útil para depurar. Los editores de texto modernos generalmente reconocen todos los tipos de líneas nuevas de CR + LF y permiten a los usuarios realizar conversiones entre los diferentes estándares. navegadores web también suelen ser capaces de mostrar archivos de texto y sitios web que utilizan diferentes tipos de nuevas líneas.

Incluso si un programa admite diferentes convenciones de nueva línea, estas características a menudo no están suficientemente etiquetadas, descritas o documentadas. Por lo general, se mostrará a los usuarios un menú o cuadro combinado que enumera diferentes convenciones de nuevas líneas sin una indicación de si la selección reinterpretará, convertirá temporalmente o convertirá permanentemente las nuevas líneas. Algunos programas se convertirán implícitamente al abrir, copiar, pegar o guardar, a menudo de manera inconsistente.

La mayoría de los protocolos textuales de Internet (incluidos HTTP , SMTP , FTP , IRC y muchos otros) exigen el uso de ASCII CR + LF ( '\ r \ n' , 0x0D 0x0A ) a nivel de protocolo, pero recomiendan que las aplicaciones tolerantes reconozcan LF solitario ( '\ n' , 0x0A ) también. A pesar del estándar dictado, muchas aplicaciones utilizan erróneamente la secuencia de escape de nueva línea de C '\ n' ( LF ) en lugar de la combinación correcta de escape de retorno de carro y secuencias de escape de nueva línea'\ r \ n' ( CR + LF ) (consulte la sección Nueva línea en lenguajes de programación más arriba). Este uso accidental de secuencias de escape incorrectas conduce a problemas al intentar comunicarse con sistemas que se adhieren a la interpretación más estricta de los estándares en lugar de la interpretación tolerante sugerida. Uno de esos sistemas intolerantes es el agente de transferencia de correo qmail que se niega activamente a aceptar mensajes de sistemas que envían LF desnudo en lugar del CR + LF requerido . [23]

El formato de mensaje de Internet estándar [24] para correo electrónico establece: "CR y LF DEBEN aparecer juntos como CRLF; NO DEBEN aparecer de forma independiente en el cuerpo".

El Protocolo de transferencia de archivos puede convertir automáticamente las líneas nuevas en archivos que se transfieren entre sistemas con diferentes representaciones de líneas nuevas cuando la transferencia se realiza en "modo ASCII". Sin embargo, transferir archivos binarios en este modo generalmente tiene resultados desastrosos: cualquier ocurrencia de la secuencia de bytes de nueva línea, que no tiene semántica de terminador de línea en este contexto, pero es solo parte de una secuencia normal de bytes, se traducirá a cualquier representación de nueva línea el otro sistema usa, corrompiendo efectivamente el archivo. Los clientes FTP a menudo emplean algunas heurísticas (por ejemplo, inspección de extensiones de nombre de archivo) para seleccionar automáticamente el modo binario o ASCII, pero al final depende de los usuarios asegurarse de que sus archivos se transfieran en el modo correcto. Si hay alguna duda sobre el modo correcto, se debe utilizar el modo binario, ya que FTP no modificará archivos, aunque pueden mostrarse incorrectamente. [25]

Buscar Reemplazar líneas nuevas [ editar ]

Microsoft Word admite el párrafo como un carácter especial ^ p y el salto de línea manual como ^ l Puede buscar estas entradas directamente y reemplazarlas directamente ya que estos símbolos, por ejemplo, reemplazar ',' con ^ p ^ p reemplaza las comas con una línea nueva doble.

Google Docs admite la búsqueda de nuevas líneas si selecciona "Coincidir con expresiones regulares" y Coincidir en la expresión \ n de nueva línea. Esto se aplica únicamente a la coincidencia de texto y caracteres especiales, pero no al reemplazo. Actualmente, Google Docs no tiene soporte [26] para reemplazar líneas nuevas. Intentar reemplazar con \ n da como resultado que estos dos caracteres se incrusten en el texto del cuerpo del documento y no se agreguen nuevas líneas. Los usuarios continúan preguntando si esta función es compatible con los foros. [27]

Hay algunos complementos de Google Docs que supuestamente son compatibles con esto, [28] pero ninguno es compatible con el reemplazo de nuevas líneas [29] [30]

Conversión entre formatos de nueva línea [ editar ]

Los editores de texto se utilizan a menudo para convertir un archivo de texto entre diferentes formatos de nueva línea; la mayoría de los editores modernos pueden leer y escribir archivos utilizando al menos las diferentes convenciones ASCII CR / LF .

Por ejemplo, el editor Vim puede hacer que un archivo sea compatible con el editor de texto del Bloc de notas de Windows. Dentro de vim

 : establecer  formato de archivo = dos : wq

Los editores pueden no ser adecuados para convertir archivos más grandes o para la conversión masiva de muchos archivos. Para archivos más grandes (en Windows NT / 2000 / XP), a menudo se usa el siguiente comando:

D: \> TYPE unix_file | BUSCAR / V ""  > dos_file

Los programas de propósito especial para convertir archivos entre diferentes convenciones de nueva línea incluyen unix2dos y dos2unix , mac2unix y unix2mac , mac2dos y dos2mac , y flip . [31] El comando tr está disponible en prácticamente todos los sistemas similares a Unix y puede usarse para realizar operaciones de reemplazo arbitrarias en caracteres individuales. Un archivo de texto DOS / Windows se puede convertir a formato Unix simplemente eliminando todos los caracteres ASCII CR con

$ Tr -d '\ r' < archivo de entrada > outputfile

o, si el texto solo tiene líneas nuevas CR , convirtiendo todas las líneas nuevas CR a LF con

$ Tr '\ r' '\ n' < archivo de entrada > outputfile

Las mismas tareas a veces se realizan con awk , sed o en Perl si la plataforma tiene un intérprete de Perl:

$ awk '{sub ("$", "\ r \ n"); printf ("% s", $ 0);} ' inputfile> outputfile # UNIX a DOS (agregando CR en sistemas operativos basados ​​en Linux y BSD que no tienen extensiones GNU) $ awk ' {gsub ("\ r", ""); print;} ' inputfile> outputfile # DOS a UNIX (eliminando CR en Linux y sistemas operativos basados ​​en BSD que no tienen extensiones GNU) $ sed -e ' s / $ / \ r / ' inputfile> outputfile # UNIX a DOS (agregando CRs en sistemas operativos basados ​​en Linux que usan extensiones GNU) $ sed -e 's / \ r $ //' inputfile> outputfile # DOS a UNIX (eliminando CR en sistemas operativos basados ​​en Linux que usan extensiones GNU) $ perl -pe's / \ r? \ n | \ r / \ r \ n / g' archivo de entrada> archivo de salida # Convertir a DOS $ perl -pe 's / \ r? \ n | \ r / \ n / g' archivo de entrada> archivo de salida # Convertir a UNIX $ perl -pe 's / \ r? \ N | \ r / \ r / g' inputfile> outputfile # Convertir a Mac antiguo

El comando de archivo puede identificar el tipo de terminaciones de línea:

$ file myfile.txt myfile.txt: texto en inglés ASCII, con terminadores de línea CRLF

El comando Unix egrep (extendido grep) se puede usar para imprimir nombres de archivo de Unix o archivos DOS (asumiendo solo archivos Unix y estilo DOS, no Mac OS):

$ egrep -L '\ r \ n' myfile.txt # muestra el archivo de estilo UNIX (LF terminado) $ egrep -l '\ r \ n' myfile.txt # muestra el archivo de estilo DOS (CRLF terminado)

Otras herramientas permiten al usuario visualizar los caracteres EOL:

$ od -a miarchivo.txt $ cat -e miarchivo.txt $ hexdump -c miarchivo.txt

Interpretación [ editar ]

Dos formas de ver las líneas nuevas, ambas autoconsistentes , son que las líneas nuevas separan las líneas o terminanlíneas. Si una nueva línea se considera un separador, no habrá nueva línea después de la última línea de un archivo. Algunos programas tienen problemas para procesar la última línea de un archivo si no termina con una nueva línea. Por otro lado, los programas que esperan que se use una nueva línea como separador interpretarán una nueva línea final como el comienzo de una nueva línea (vacía). Por el contrario, si una nueva línea se considera un terminador, se espera que todas las líneas de texto, incluida la última, terminen con una nueva línea. Si la secuencia de caracteres final en un archivo de texto no es una nueva línea, la línea final del archivo puede considerarse una línea de texto incorrecta o incompleta, o puede considerarse que el archivo está truncado incorrectamente.

En el texto destinado principalmente a ser leído por humanos que utilizan software que implementa la función de ajuste de palabras , un carácter de nueva línea generalmente solo necesita almacenarse si se requiere un salto de línea independientemente de si la siguiente palabra cabría en la misma línea, como entre párrafos y en listas verticales. Por lo tanto, en la lógica del procesamiento de texto y en la mayoría de los editores de texto , la nueva línea se usa como un salto de párrafo y se conoce como un "retorno completo ", en contraste con los "retornos suaves" que se crean dinámicamente para implementar el ajuste de palabras y se pueden cambiar con cada uno. instancia de visualización. En muchas aplicaciones, un carácter de control separadollamado "salto de línea manual" existe para forzar saltos de línea dentro de un solo párrafo. El glifo del carácter de control para un retorno forzado suele ser un pilcrow (¶), y para el salto de línea manual suele ser una flecha de retorno de carro (↵).

Avances de línea inversos y parciales [ editar ]

RI , ( U + 008D REVERSE LINE FEED, [32] ISO / IEC 6429 8D, decimal 141) se utiliza para mover la posición de impresión hacia atrás una línea (al retroceder el papel o al mover el cursor de la pantalla una línea hacia arriba). que otros caracteres pueden imprimirse sobre el texto existente. Esto se puede hacer para hacerlos más audaces o para agregar subrayados, tachados u otros caracteres como diacríticos .

De manera similar, PLD ( U + 008B PARCIAL LINE FORWARD, decimal 139) y PLU ( U + 008C PARCIAL LINE BACKWARD, decimal 140) se pueden usar para avanzar o invertir la posición de impresión del texto en una fracción del espaciado de línea vertical (típicamente, la mitad ). Estos se pueden usar en combinación para subíndices (avanzando y luego invirtiendo) y superíndices (invirtiendo y luego avanzando), y también pueden ser útiles para imprimir signos diacríticos.

Ver también [ editar ]

  • Caracteres de control de carro ASA
  • Códigos de control C0 y C1
  • Fin del documento
  • Línea de hambre
  • Salto de página
  • Retorno de carro
  • Introducir clave

Referencias [ editar ]

  1. ^ "¿Qué es una nueva línea?" . www.computerhope.com . Consultado el 10 de mayo de 2021 .
  2. ^ Qualline, Steve (2001). Vi mejorado - Vim (PDF) . Sams. pag. 120. ISBN  9780735710016.
  3. ^ "Gráfico ASCII" .
  4. ^ Bray, Andrew C .; Dickens, Adrian C .; Holmes, Mark A. La guía de usuario avanzada para el microordenador BBC (PDF) . págs. 103, 104. ISBN  978-0946827008. Consultado el 30 de enero de 2019 .
  5. ^ "Manual de referencia de programadores de RISC OS 3" . Consultado el 18 de julio de 2018 .
  6. ^ Tarjeta de datos de referencia IBM System / 360, publicación GX20-1703, División de procesamiento de datos de IBM, White Plains, NY
  7. ^ "UAX # 14: algoritmo de ruptura de línea Unicode" . www.unicode.org .
  8. ^ "Conjunto de caracteres de control C1 de ISO 6429" (PDF) . ITSCJ. IPSJ. 1 de octubre de 1983.
  9. ^ Funciones de control para juegos de caracteres codificados (PDF) (Informe). ECMA Internacional. Junio ​​de 1991.
  10. ^ Estructura de código de caracteres y técnicas de extensión (PDF) (Informe) (6ª ed.). ECMA Internacional. Diciembre de 1994.
  11. ^ "Especificación del idioma ECMAScript 2019" . ECMA Internacional. Junio ​​de 2019. 11.3 Terminadores de línea .
  12. ^ "Especificación del idioma ECMAScript 2019" . ECMA Internacional. Junio ​​de 2019. 11.2 Espacio en blanco .
  13. ^ "El formato de intercambio de datos de notación de objetos JavaScript (JSON)" . Marzo de 2014. 7. Cuerdas . RFC 7159 . 
  14. ^ "Subsume JSON (también conocido como JSON ⊂ ECMAScript)" . GitHub . 22 de mayo de 2018.
  15. ^ "Especificación del idioma ECMAScript 2019" . ECMA Internacional. Junio ​​de 2019. 11.8.4 Literales de cadena .
  16. ^ "Especificación del idioma ECMAScript 2018" . ECMA Internacional. Junio ​​de 2018. 11.8.4 Literales de cadena .
  17. ^ "YAML no es lenguaje de marcado (YAML ™) versión 1.2" . yaml.org . 5.4. Caracteres de salto de línea .
  18. ^ "binmode - perldoc.perl.org" . perldoc.perl.org .
  19. ^ "PHP: Cadenas - Manual" . www.php.net .
  20. ^ "Análisis léxico - documentación de Python v3.0.1" . docs.python.org .
  21. ^ "Novedades de Python 2.3" .
  22. ^ "PHP: Constantes predefinidas - Manual" . www.php.net .
  23. ^ "cr.yp.to" .
  24. ^ "RFC 2822 - Formato de mensaje de Internet" . El grupo de trabajo de ingeniería de Internet .
  25. ^ "Transferencia de archivos" . En caso de duda, transfiera en modo binario.
  26. ^ "Soporte de Google" . Reemplace todas las comas con nuevas líneas: Google Docs.
  27. ^ "Stackoverflow" . Google Docs: inserte una nueva línea en los resultados de buscar y reemplazar
  28. ^ "Soporte de Google" . buscar + reemplazar para reemplazar la nueva línea (\ n) con saltos de línea suaves: Google Docs.
  29. ^ "Complemento de Google" . Búsqueda avanzada de reemplazo: Google Docs
  30. ^ "Complemento de Google" . Limpiador de texto: Google Docs
  31. ^ "Conversión de texto ASCII entre UNIX, Macintosh, MS-DOS" . Archivado desde el original el 9 de febrero de 2009.
  32. ^ "Controles C1 y suplemento Latin-1" (PDF) . unicode.org . Consultado el 13 de febrero de 2016 .

Enlaces externos [ editar ]

  • La referencia Unicode, consulte el párrafo 5.8 en el Capítulo 5 del estándar Unicode 4.0 (PDF)
  • El carácter de nueva línea [NEL]
  • El rompecabezas de fin de línea
  • Comprensión de las nuevas líneas en la Wayback Machine (archivado el 20 de agosto de 2006)
  • "La historia del final de la línea"