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/
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
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/’>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
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’>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
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.
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]&/&/’
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 .