Numeración de líneas en Linux

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo utilizar el comando nl de Linux para agregar números de línea a archivos de texto. Numerar las líneas es una técnica útil cuando se trabaja con archivos de configuración, código o cualquier documento de texto en el que se deba hacer referencia a líneas específicas. El comando nl ofrece varias opciones para personalizar el formato de numeración, lo que lo convierte en una herramienta flexible para diferentes necesidades de documentación y procesamiento.

Al final de este laboratorio, entenderás cómo aplicar técnicas básicas y avanzadas de numeración de líneas a archivos de texto, lo que mejorará tus habilidades de procesamiento de texto en Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux/BasicSystemCommandsGroup -.-> linux/nl("Line Numbering") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/pwd("Directory Displaying") linux/TextProcessingGroup -.-> linux/sed("Stream Editing") linux/VersionControlandTextEditorsGroup -.-> linux/nano("Simple Text Editing") subgraph Lab Skills linux/nl -.-> lab-271345{{"Numeración de líneas en Linux"}} linux/cat -.-> lab-271345{{"Numeración de líneas en Linux"}} linux/pwd -.-> lab-271345{{"Numeración de líneas en Linux"}} linux/sed -.-> lab-271345{{"Numeración de líneas en Linux"}} linux/nano -.-> lab-271345{{"Numeración de líneas en Linux"}} end

Creación de un archivo de texto de muestra

En este paso, crearás un archivo de texto de muestra que utilizarás a lo largo de este laboratorio para practicar la numeración de líneas.

Primero, verificaremos tu directorio de trabajo actual. Por defecto, deberías estar en el directorio /home/labex/project. Puedes confirmar esto con el comando pwd:

pwd

Deberías ver la siguiente salida:

/home/labex/project

Ahora, crearemos un simple archivo de texto llamado sample.txt utilizando el editor de texto nano. Escribe el siguiente comando para abrir nano:

nano sample.txt

Dentro del editor nano, escribe el siguiente contenido:

Linux Commands
-------------
cat - display file contents
ls - list directory contents
cd - change directory
grep - search for patterns
chmod - change file permissions

Para guardar el archivo y salir de nano:

  1. Presiona Ctrl+X (para salir)
  2. Presiona Y (para confirmar que deseas guardar los cambios)
  3. Presiona Enter (para confirmar el nombre del archivo)

Ahora, verifica que tu archivo se haya creado mostrando su contenido:

cat sample.txt

Deberías ver exactamente el texto que ingresaste mostrado en la terminal.

Numeración básica de líneas con nl

Ahora que has creado un archivo de texto de muestra, aprendamos cómo agregar números de línea utilizando el comando nl. El comando nl en Linux se utiliza para numerar las líneas de un archivo, lo cual puede ser útil con fines de referencia.

Utilicemos el comando nl básico para numerar todas las líneas de tu archivo de muestra:

nl sample.txt

Deberías ver una salida similar a la siguiente:

     1  Linux Commands
     2  -------------
     3  cat - display file contents
     4  ls - list directory contents
     5  cd - change directory
     6  grep - search for patterns
     7  chmod - change file permissions

Observa que el comando nl agrega números de línea al principio de cada línea. Este es el comportamiento predeterminado del comando nl.

Si deseas guardar esta salida numerada en un nuevo archivo, puedes utilizar la redirección de salida con el símbolo >:

nl sample.txt > numbered_sample.txt

Este comando crea un nuevo archivo llamado numbered_sample.txt que contiene la versión numerada de tu archivo original. Verifiquemos el contenido de este nuevo archivo:

cat numbered_sample.txt

Deberías ver la misma salida numerada que antes, ahora guardada en un archivo.

El comando nl básico es útil, pero a veces es posible que necesites personalizar cómo se muestra la numeración de líneas. En el siguiente paso, exploraremos algunas opciones de personalización.

Personalización del formato de numeración de líneas

El comando nl ofrece varias opciones para personalizar cómo se muestran los números de línea. En este paso, aprenderás cómo modificar el formato de numeración de líneas para adaptarlo a diferentes necesidades.

Número inicial

Por defecto, la numeración de líneas comienza en 1. Puedes cambiar esto con la opción -v (valor inicial). Numeremos las líneas comenzando desde 100:

nl -v 100 sample.txt > custom_start.txt

Veamos el resultado:

cat custom_start.txt

Deberías ver una salida con números de línea que comienzan desde 100:

   100  Linux Commands
   101  -------------
   102  cat - display file contents
   103  ls - list directory contents
   104  cd - change directory
   105  grep - search for patterns
   106  chmod - change file permissions

Formato de número

También puedes controlar el formato de los números utilizando la opción -n. Los especificadores de formato incluyen:

  • ln: alineado a la izquierda, sin ceros a la izquierda
  • rn: alineado a la derecha, sin ceros a la izquierda
  • rz: alineado a la derecha, con ceros a la izquierda

Probemos con números alineados a la derecha y con ceros a la izquierda:

nl -n rz sample.txt > zero_padded.txt

Veamos el resultado:

cat zero_padded.txt

Deberías ver una salida como esta:

000001  Linux Commands
000002  -------------
000003  cat - display file contents
000004  ls - list directory contents
000005  cd - change directory
000006  grep - search for patterns
000007  chmod - change file permissions

Ancho del campo de número

Puedes controlar el ancho del campo de número con la opción -w. Por defecto, tiene un ancho de 6 caracteres. Establezcámoslo en 3:

nl -w 3 sample.txt > narrow_numbers.txt

Veamos el resultado:

cat narrow_numbers.txt

Deberías ver una salida con un campo de número más estrecho:

  1  Linux Commands
  2  -------------
  3  cat - display file contents
  4  ls - list directory contents
  5  cd - change directory
  6  grep - search for patterns
  7  chmod - change file permissions

Intenta combinar múltiples opciones:

nl -v 10 -w 4 -n rz sample.txt > combined_format.txt

Este comando:

  • Comienza la numeración desde 10 (-v 10)
  • Establece el ancho en 4 caracteres (-w 4)
  • Utiliza el formato alineado a la derecha con ceros a la izquierda (-n rz)

Veamos el resultado combinado:

cat combined_format.txt

Deberías ver una numeración de líneas personalizada:

0010  Linux Commands
0011  -------------
0012  cat - display file contents
0013  ls - list directory contents
0014  cd - change directory
0015  grep - search for patterns
0016  chmod - change file permissions

Estas opciones de personalización te dan flexibilidad en cómo se muestran los números de línea en tus documentos.

Numeración selectiva de líneas

A veces, es posible que solo desees numerar ciertas líneas de un archivo, no todas. El comando nl ofrece opciones para numerar selectivamente las líneas en función de criterios específicos.

Crear un archivo con líneas en blanco

Primero, creemos un nuevo archivo que incluya líneas en blanco:

nano mixed_content.txt

En el editor nano, ingresa el siguiente contenido (incluyendo las líneas en blanco):

Section 1: File Operations

cat - display file contents
less - view file content with pagination

Section 2: Navigation

cd - change directory
pwd - print working directory

Section 3: Permissions

chmod - change file permissions
chown - change file ownership

Guarda el archivo presionando Ctrl+X, luego Y y Enter.

Numerar solo las líneas no vacías

Por defecto, nl numera todas las líneas. Para numerar solo las líneas no vacías, utiliza la opción -b t:

nl -b t mixed_content.txt > numbered_nonempty.txt

Ve el resultado:

cat numbered_nonempty.txt

Deberías ver que solo se han numerado las líneas no vacías:

     1  Section 1: File Operations

     2  cat - display file contents
     3  less - view file content with pagination

     4  Section 2: Navigation

     5  cd - change directory
     6  pwd - print working directory

     7  Section 3: Permissions

     8  chmod - change file permissions
     9  chown - change file ownership

Numerar solo las líneas que coincidan con un patrón

También puedes numerar solo las líneas que coincidan con un patrón específico utilizando la opción -b p'PATTERN'. Por ejemplo, para numerar solo las líneas que contengan la palabra "Section":

nl -b p'Section' mixed_content.txt > numbered_sections.txt

Ve el resultado:

cat numbered_sections.txt

Deberías ver que solo se numeran las líneas que contienen "Section":

     1  Section 1: File Operations

cat - display file contents
less - view file content with pagination

     2  Section 2: Navigation

cd - change directory
pwd - print working directory

     3  Section 3: Permissions

chmod - change file permissions
chown - change file ownership

Personalizar el separador

El separador predeterminado entre el número de línea y el texto es una tabulación. Puedes cambiar esto utilizando la opción -s:

nl -s '. ' mixed_content.txt > custom_separator.txt

Ve el resultado:

cat custom_separator.txt

Deberías ver números de línea seguidos de un punto y un espacio:

     1. Section 1: File Operations
     2.
     3. cat - display file contents
     4. less - view file content with pagination
     5.
     6. Section 2: Navigation
     7.
     8. cd - change directory
     9. pwd - print working directory
    10.
    11. Section 3: Permissions
    12.
    13. chmod - change file permissions
    14. chown - change file ownership

Estas opciones de numeración selectiva te permiten aplicar números de línea solo donde son necesarios, lo que hace que tus documentos estén más organizados y sean más fáciles de consultar.

Aplicaciones prácticas y uso avanzado

En este último paso, exploraremos algunas aplicaciones prácticas y el uso avanzado del comando nl en escenarios del mundo real.

Numeración de múltiples archivos

El comando nl puede procesar múltiples archivos a la vez. Creemos un segundo archivo:

nano commands2.txt

Agrega el siguiente contenido:

Additional Linux Commands
------------------------
find - search for files
tar - archive files
ssh - secure shell connection
df - disk free space
top - display system processes

Guarda y sal del editor nano. Ahora, numeremos ambos archivos juntos:

nl sample.txt commands2.txt > combined_numbered.txt

Ve el resultado combinado:

cat combined_numbered.txt

Deberías ver que ambos archivos están numerados secuencialmente:

     1  Linux Commands
     2  -------------
     3  cat - display file contents
     4  ls - list directory contents
     5  cd - change directory
     6  grep - search for patterns
     7  chmod - change file permissions
     1  Additional Linux Commands
     2  ------------------------
     3  find - search for files
     4  tar - archive files
     5  ssh - secure shell connection
     6  df - disk free space
     7  top - display system processes

Observa que los números de línea se reinician para el segundo archivo. Si quieres una numeración continua entre archivos, puedes usar la opción -i:

nl -i 1 -n ln sample.txt commands2.txt > continuously_numbered.txt

Ve el resultado:

cat continuously_numbered.txt

Deberías ver una numeración continua en ambos archivos:

     1  Linux Commands
     2  -------------
     3  cat - display file contents
     4  ls - list directory contents
     5  cd - change directory
     6  grep - search for patterns
     7  chmod - change file permissions
     8  Additional Linux Commands
     9  ------------------------
    10  find - search for files
    11  tar - archive files
    12  ssh - secure shell connection
    13  df - disk free space
    14  top - display system processes

Combinación con otros comandos

El comando nl se puede combinar con otros comandos de Linux utilizando tuberías (pipes). Por ejemplo, puedes numerar las líneas de la salida de un comando:

ls -l /etc | nl > numbered_ls_output.txt

Ve el resultado:

cat numbered_ls_output.txt

Deberías ver la salida de ls -l /etc con números de línea agregados.

Caso de uso en el mundo real: Agregar números de línea a un archivo de registro

La numeración de líneas es especialmente útil cuando se analizan archivos de registro. Veamos cómo podemos usar nl para agregar números de línea a los registros:

## First, create a sample log file
cat > sample_log.txt << EOF
[2023-07-01 10:15:22] INFO: System startup
[2023-07-01 10:15:24] INFO: Loading configuration
[2023-07-01 10:15:25] WARNING: Config file is outdated
[2023-07-01 10:15:28] ERROR: Failed to connect to database
[2023-07-01 10:15:30] INFO: Retrying database connection
[2023-07-01 10:15:33] INFO: Database connection established
[2023-07-01 10:15:35] INFO: System ready
EOF

Ahora, agrega números de línea con un formato personalizado que incluya el número de línea entre corchetes:

nl -s ' [Line: ' -n ln -w 2 -b a sample_log.txt | sed 's/$/]/' > numbered_log.txt

Este comando:

  • Utiliza un separador personalizado -s ' [Line: '
  • Utiliza números alineados a la izquierda sin ceros a la izquierda -n ln
  • Establece el ancho en 2 caracteres -w 2
  • Numera todas las líneas -b a
  • Utiliza sed para agregar un corchete de cierre al final de cada línea

Ve el resultado:

cat numbered_log.txt

Deberías ver entradas de registro con números de línea entre corchetes:

 1 [Line: [2023-07-01 10:15:22] INFO: System startup]
 2 [Line: [2023-07-01 10:15:24] INFO: Loading configuration]
 3 [Line: [2023-07-01 10:15:25] WARNING: Config file is outdated]
 4 [Line: [2023-07-01 10:15:28] ERROR: Failed to connect to database]
 5 [Line: [2023-07-01 10:15:30] INFO: Retrying database connection]
 6 [Line: [2023-07-01 10:15:33] INFO: Database connection established]
 7 [Line: [2023-07-01 10:15:35] INFO: System ready]

Este formato puede ser muy útil cuando se hace referencia a entradas de registro específicas en documentación o discusiones.

Ahora tienes una buena comprensión de cómo usar el comando nl para la numeración básica y avanzada de líneas en Linux. Esta habilidad será valiosa cuando trabajes con archivos de texto, registros, código y documentación.

Resumen

En este laboratorio, has aprendido cómo usar el comando nl de Linux para agregar números de línea a archivos de texto. Aquí está un resumen de los conceptos clave cubiertos:

  • Numeración básica de líneas utilizando el simple comando nl
  • Personalización del formato de numeración de líneas con opciones como -v (valor inicial), -n (formato de número) y -w (ancho)
  • Numeración selectiva de líneas con opciones como -b t (líneas no vacías) y -b p'PATTERN' (coincidencia de patrones)
  • Personalización del separador entre los números de línea y el texto con la opción -s
  • Trabajo con múltiples archivos y creación de numeración continua entre archivos
  • Combinación de nl con otros comandos utilizando tuberías (pipes)
  • Aplicaciones prácticas, como la numeración de archivos de registro para una referencia más fácil

El comando nl es una herramienta valiosa para el procesamiento de texto en Linux, especialmente cuando necesitas hacer referencia a líneas específicas en documentación, revisiones de código o cuando se analizan archivos de registro. Al dominar las diversas opciones de nl, ahora tienes una técnica poderosa para mejorar la legibilidad y usabilidad de los datos basados en texto.

A medida que continúes tu viaje en Linux, recuerda que los comandos de procesamiento de texto como nl, combinados con otras herramientas, forman la base de la manipulación eficiente de archivos y el procesamiento de datos en el entorno Linux.