Comando sed de Linux con ejemplos prácticos

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 poderoso comando sed (editor de flujo) en Linux para el procesamiento y edición de texto. El laboratorio cubre los conceptos básicos del comando sed, incluyendo la realización de sustituciones de texto, la edición de múltiples archivos y más. Explorarás varios comandos sed y sus aplicaciones prácticas, lo que te permitirá manipular y transformar datos de texto de manera eficiente en la línea de comandos.

El laboratorio comienza presentando los conceptos fundamentales del comando sed, demostrando cómo imprimir el contenido completo de un archivo, imprimir líneas específicas, sustituir texto, eliminar líneas e insertar o anexar texto. Luego, profundiza en técnicas de sustitución de texto más avanzadas, mostrándote cómo realizar sustituciones en múltiples archivos. Finalmente, el laboratorio cubre la edición de múltiples archivos con sed, lo que te permite optimizar tus flujos de trabajo de procesamiento de texto.

Hoja de trucos de comandos de Linux


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/find("File Searching") linux/TextProcessingGroup -.-> linux/sed("Stream Editing") subgraph Lab Skills linux/echo -.-> lab-422906{{"Comando sed de Linux con ejemplos prácticos"}} linux/cat -.-> lab-422906{{"Comando sed de Linux con ejemplos prácticos"}} linux/find -.-> lab-422906{{"Comando sed de Linux con ejemplos prácticos"}} linux/sed -.-> lab-422906{{"Comando sed de Linux con ejemplos prácticos"}} end

Comprender los conceptos básicos del comando sed

En este paso, aprenderemos los conceptos básicos del comando sed (editor de flujo) en Linux. El comando sed es una herramienta poderosa para el procesamiento y edición de texto, que te permite realizar diversas operaciones en archivos de texto.

Primero, creemos un archivo de texto de muestra con el que trabajar:

echo "This is a sample text file." > sample.txt

Ahora, exploremos algunos comandos básicos de sed:

Imprimir el archivo completo

Para imprimir todo el contenido del archivo, utiliza el siguiente comando:

sed 's/.*/' sample.txt

Salida de ejemplo:

This is a sample text file.

Imprimir una línea específica

Para imprimir una línea específica, utiliza el número de línea con el comando p:

sed -n '2p' sample.txt

Salida de ejemplo:

This is a sample text file.

Sustituir texto

Para sustituir texto, utiliza el comando s seguido del patrón y el reemplazo:

sed 's/sample/new/' sample.txt

Salida de ejemplo:

This is a new text file.

Eliminar líneas

Para eliminar una línea específica, utiliza el comando d seguido del número de línea:

sed '2d' sample.txt

Salida de ejemplo:

This is a sample text file.

Insertar o anexar texto

Para insertar texto antes de una línea, utiliza el comando i. Para anexar texto después de una línea, utiliza el comando a:

sed '2i This is an inserted line.' sample.txt
sed '2a This is an appended line.' sample.txt

Salida de ejemplo:

This is a sample text file.
This is an inserted line.
This is a sample text file.
This is an appended line.

Estos son solo algunos ejemplos básicos de cómo usar el comando sed. En el siguiente paso, exploraremos operaciones más avanzadas de sed, como realizar sustituciones de texto en múltiples archivos.

Realizar sustituciones de texto utilizando sed

En este paso, exploraremos sustituciones de texto más avanzadas utilizando el comando sed.

Primero, creemos un nuevo archivo de muestra con múltiples ocurrencias de la palabra "old":

echo "This is an old text. Replace the old text with new text." > sample.txt

Reemplazar todas las ocurrencias de una palabra

Para reemplazar todas las ocurrencias de una palabra, utiliza la bandera global g:

sed 's/old/new/g' sample.txt

Salida de ejemplo:

This is an new text. Replace the new text with new text.

Reemplazar solo la primera ocurrencia

Para reemplazar solo la primera ocurrencia, omite la bandera global g:

sed 's/old/new/' sample.txt

Salida de ejemplo:

This is an new text. Replace the old text with new text.

Reemplazar en una línea específica

Para reemplazar texto en una línea específica, utiliza el número de línea antes del comando s:

sed '1s/old/new/' sample.txt

Salida de ejemplo:

This is an new text. Replace the old text with new text.

Reemplazar utilizando expresiones regulares

Sed también admite expresiones regulares. Para reemplazar texto utilizando una expresión regular, utiliza la sintaxis \1 para hacer referencia a los grupos capturados:

sed 's/\(This.*\)old\(.*\)/\1new\2/' sample.txt

Salida de ejemplo:

This is an new text. Replace the new text with new text.

Reemplazar en múltiples archivos

Para reemplazar texto en múltiples archivos, pasa los nombres de los archivos como argumentos al comando sed:

sed 's/old/new/g' sample.txt another_file.txt

Esto realizará la sustitución de texto tanto en sample.txt como en another_file.txt.

En el siguiente paso, aprenderemos cómo editar múltiples archivos utilizando el comando sed.

Editar múltiples archivos con sed

En este paso, aprenderemos cómo utilizar el comando sed para editar múltiples archivos a la vez.

Primero, creemos dos archivos de texto de muestra:

echo "This is the first file." > file1.txt
echo "This is the second file." > file2.txt

Reemplazar texto en múltiples archivos

Para reemplazar texto en múltiples archivos, simplemente pasa los nombres de los archivos como argumentos al comando sed:

sed 's/first/updated/g' file1.txt file2.txt

Salida de ejemplo:

This is the updated file.
This is the second file.

Editar archivos directamente

Por defecto, sed imprime la salida modificada en la consola. Para editar los archivos directamente, utiliza la opción -i:

sed -i 's/second/new/g' file1.txt file2.txt

Ahora, los archivos file1.txt y file2.txt se han modificado directamente.

Utilizar un archivo de respaldo

Si deseas mantener una copia de seguridad de los archivos originales, puedes utilizar la opción -i con una extensión de respaldo:

sed -i.bak 's/new/updated/g' file1.txt file2.txt

Esto creará archivos de respaldo file1.txt.bak y file2.txt.bak que contendrán el contenido original.

Editar archivos de forma recursiva

Para editar archivos de forma recursiva en un directorio, puedes utilizar el comando find junto con sed:

find . -type f -name "*.txt" -exec sed -i 's/updated/final/g' {} \;

Esto reemplazará todas las ocurrencias de "updated" por "final" en todos los archivos .txt del directorio actual y sus subdirectorios.

Con estas técnicas, puedes editar eficientemente múltiples archivos utilizando el comando sed. Esto puede ser especialmente útil cuando necesitas realizar reemplazos o modificaciones de texto a gran escala en múltiples archivos.

Resumen

En este laboratorio, aprendimos los conceptos básicos del comando sed en Linux, incluyendo imprimir el archivo completo, imprimir líneas específicas, realizar sustituciones de texto, eliminar líneas e insertar o anexar texto. También exploramos sustituciones de texto más avanzadas utilizando sed, donde aprendimos cómo reemplazar múltiples ocurrencias de una palabra en un archivo, así como cómo editar múltiples archivos simultáneamente con sed.

Las principales lecciones de este laboratorio son la versatilidad y el poder del comando sed para tareas de procesamiento y edición de texto en el entorno Linux.

Hoja de trucos de comandos de Linux