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.
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:
- Presiona
Ctrl+X(para salir) - Presiona
Y(para confirmar que deseas guardar los cambios) - 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 izquierdarn: alineado a la derecha, sin ceros a la izquierdarz: 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 quieras numerar ciertas líneas de un archivo, no todas. El comando nl ofrece opciones para numerar selectivamente las líneas basándose en criterios específicos.
Crear un Archivo con Líneas en Blanco
Primero, vamos a crear un nuevo archivo que incluya líneas en blanco:
nano mixed_content.txt
En el editor nano, introduce 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, usa la opción -b t:
nl -b t mixed_content.txt > numbered_nonempty.txt
Visualiza el resultado:
cat numbered_nonempty.txt
Deberías ver que solo las líneas no vacías han sido numeradas:
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 Coinciden con un Patrón
También puedes numerar solo las líneas que coinciden con un patrón específico usando la opción -b p'PATTERN' (patrón). Por ejemplo, para numerar solo las líneas que contienen la palabra "Section":
nl -b p'Section' mixed_content.txt > numbered_sections.txt
Visualiza el resultado:
cat numbered_sections.txt
Deberías ver que solo las líneas que contienen "Section" están numeradas:
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 usando la opción -s:
nl -s '. ' mixed_content.txt > custom_separator.txt
Visualiza el resultado:
cat custom_separator.txt
Deberías ver los números de línea seguidos de un punto y un espacio:
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
Estas opciones de numeración selectiva te permiten aplicar números de línea solo donde son necesarios, haciendo que tus documentos estén más organizados y sean más fáciles de referenciar.
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
sedpara 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
nlcon 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.



