¿Qué es SED en Linux y cómo se usa?

sed significa stren educaritor y es un comando de uso común en Linux/Unix. El nombre proviene de un acrónimo de esas dos palabras. No es un editor de texto, aunque modifica el texto. En su lugar, sed recibe la entrada de texto como un «flujo» y edita el flujo de acuerdo con sus instrucciones.

En general, la gente usa sed como una versión de línea de comando de buscar y reemplazar. El comando principal del programa se utiliza para sustituir una cadena de caracteres por otra. Esto lo hace útil para ejecutar funciones de búsqueda y reemplazo en un lote de archivos, pero no es tan fácil de usar como algo del Bloc de notas o Word. Descubrirá que la sintaxis requiere un poco de tiempo para acostumbrarse, pero una vez que la domine, verá lo increíblemente poderoso que puede ser este editor compacto.

Usando sed para sustitución

Para usar sed, deberá abrir una ventana de Terminal. El comando se invoca con sed, pero escribir eso solo no hará nada. Debe proporcionar uno de los comandos, así como algunos parámetros.

El parámetro más común es sustituto, o s. Un simple sed El comando de sustitución se parece a lo siguiente:

Ese comando ordenará a sed que escanee el texto entrante y reemplace cada instancia de la cadena «gato» con «perro». Para demostrarlo, usaremos el echo comando para darle a sed algo con lo que trabajar.

echo cat catapult | sed 's/cat/dog/'

que-es-sed-guia-1

Hay tres partes principales en el comando sed. Primero, hay sed que inicia el programa. Luego está el s que inicia el comando de sustitución. La barra inclinada / es un separador. La cadena después de eso será la cadena que sed busca. La cadena después de la segunda barra inclinada serán los caracteres de reemplazo que sed escribe en la transmisión. La barra inclinada final cierra el comando. Todos juntos, es 's/text-to-find/text-to-replace/'.

Tenga en cuenta las comillas simples en ese ejemplo. Las comillas simples le permiten usar metacaracteres en su comando. Si bien las comillas no son esenciales para la mayoría de nuestros ejemplos, debe desarrollar el hábito de usar comillas para todos los comandos.

¿Qué pasa con las cadenas parciales? El comando anterior funcionará en cualquier apariencia de la cadena «gato», incluso si es parte de otra palabra. Por ejemplo, “catapulta” se convertirá en “dogapulta” mientras que “catamarán” se convertirá en “dogamarán”.

echo catapult | sed 's/cat/dog/'

que-es-sed-guia-2

Reemplazo mundial

En nuestro primer ejemplo, es posible que haya notado que solo se reemplazó la primera instancia de la cadena coincidente. Como muchas utilidades GNU, sed se basa en líneas. Como resultado, solo opera en la primera coincidencia dentro de una línea. Si tiene varias coincidencias para su cadena candidata en la línea, solo se cambiará la primera. Para hacer que sed funcione en cada aparición de la cadena de destino, use el g bandera al final del comando:

Esto operaría como el siguiente ejemplo:

echo cat catapult catamaran | sed 's/cat/dog/g'

que-es-sed-guia-3

Sin la bandera global, solo se reemplazaría la primera instancia de «gato» en cada línea.

Configuración de archivos de entrada y salida

De manera predeterminada, sed operará en la entrada estándar. Sin embargo, eso no es demasiado útil. Para ejecutar sed en un archivo, especifique el nombre del archivo al final del comando, así:

sed 's/cat/dog/g' oldfile.txt > newfile.txt

que-es-sed-guia-4

Esto ejecutará sed en «oldfile.txt» y guardará la salida del comando en «newfile.txt». Si “newfile.txt” no existe, será creado por el comando. Si no especifica un archivo de salida, sed reflejará el nuevo texto del archivo en la entrada estándar.

Si desea sobrescribir el contenido de un archivo, deberá utilizar el -i bandera. Esta bandera hace que las ediciones estén «en su lugar».

sed -i '' 's/cat/dog' oldfile.txt

Este comando sobrescribe el contenido del archivo de destino inmediatamente, lo que es un poco peligroso. Para estar seguro, puede crear una copia de seguridad in situ.

Para crear una copia de seguridad del archivo, coloque una extensión después de la -i. No necesita ser una extensión funcional: “.bu” o “.bak” funcionan bien. Esto creará un archivo de copia de seguridad con una extensión.

sed -i.bak 's/cat/dog' oldfile.txt

Esto crea «oldfile.txt.bak», que contiene los datos de texto sin editar de la versión original de «oldfile.txt».

Coincidencia de expresiones regulares

El verdadero poder de sed proviene de hacer coincidir expresiones regulares. Esto le permite establecer patrones para hacer coincidir, en lugar de cadenas literales. Por ejemplo, podríamos usar algo como la siguiente cadena para repetir cualquier conjunto de uno o más números:

echo "123 abc" | sed 's/[0-9][0-9]*/& &/'

que-es-sed-guia-5

Aprendizaje adicional

sed es una utilidad extremadamente poderosa con una profundidad de poder similar a un lenguaje de secuencias de comandos. Para obtener más información sobre las capacidades completas de sed, consulte Guía completa de Bruce Barnett para sed.

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *