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

sed significa s tream ed itor y es un comando de uso común en Linux/Unix. El nombre proviene de un portmanteau de esas dos palabras. No es un editor de texto, aunque sí modifica el texto. En su lugar, sed recibe la entrada de texto como un «stream» y edita el stream de acuerdo con sus instrucciones.

En general, la gente usa sed como una versión de línea de comandos de find and replace. 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 de Notepad o Word. Verás que la sintaxis requiere un poco de tiempo para acostumbrarse, pero una vez que lo hayas bajado, verás lo increíblemente poderoso que puede ser este editor compacto.

Uso de sed para la sustitución

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

El parámetro más común es sustituto, o s.Un simple comando de sustitución de sedimentos tiene un aspecto parecido al siguiente:

sed ‘s/cat/dog/’

Ese comando ordenará a Sed que escanee el texto entrante y reemplace cada instancia de la cadena «cat» por «dog». Para demostrarlo, usaremos el comando de eco para darle algo con lo que trabajar.

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

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.

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

Hay tres partes principales en el comando sed. Primero, hay un ssed que inicia el programa. Luego está el swhich que inicia el comando de sustitución. La barra oblicua / es un separador. La cadena después de eso será la cadena que busca el sedante. La cadena después de la segunda barra serán los caracteres de reemplazo que sed escribe en la secuencia. La última barra cierra el comando. En conjunto, es ‘s/text-to-find/text-to-replace/’.

Note las comillas simples en ese ejemplo. Las comillas simples le permiten utilizar caracteres meta en su comando. Aunque las comillas no son esenciales para la mayoría de nuestros ejemplos, debería desarrollar el hábito de usar comillas para todos los comandos.

¿Qué hay de las cuerdas parciales? El comando anterior funcionará en cualquier apariencia de la cadena «cat», incluso si es parte de otra palabra. Por ejemplo, «catapulta» se convertirá en «dogapulta» como «catamarán» se convertirá en «dogamarán».

echo catapulta | sed ‘s/cat/dog/’>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.

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

Reemplazo global

En nuestro primer ejemplo, es posible que haya notado que sólo se reemplazó la primera instancia de la cadena coincidente. Como muchas utilidades de GNU, sed está basado en líneas. Como resultado, sólo funciona en el primer partido dentro de una línea. Si tiene varias coincidencias para su cadena de candidatos en la línea, sólo se cambiará la primera. Para hacer que sed funcione en cada ocurrencia de la cadena de destino, utilice la bandera g al final del comando:

sed ‘s/cat/dog/g’

Esto funcionaría como en el siguiente ejemplo:

echo catapultar catamarán | sed ‘s/cat/dog/g’>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.

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

Sin la bandera global, sólo se reemplazaría la primera instancia de «cat» en cada línea.

Configuración de archivos de entrada y salida

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

newfile.txt.

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

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 se hará eco del nuevo texto del archivo en la entrada estándar.

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

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

Este comando sobrescribe inmediatamente el contenido del archivo de destino, lo que es ligeramente 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».

Coincidir con expresiones regulares

El verdadero poder de la sed se deriva de la combinación de expresiones regulares. Esto le permite establecer patrones de concordancia, 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]*/&/&/’

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

Aprendizaje adicional

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

Deja un comentario

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