En UNIX/Linux, el comando sed es una herramienta dedicada para editar secuencias. Puede realizar varias operaciones en un flujo de texto, como buscar, encontrar y reemplazar, e insertar/eliminar. Sin embargo, en su mayor parte, sed se usa para buscar y reemplazar contenido de texto.
En esta guía, mostraremos el reemplazo de líneas nuevas con espacio usando sed.
Usando sed para reemplazar texto
Primero, veamos rápidamente cómo realizar búsquedas y reemplazos básicos usando sed. Se usará el mismo método cuando se reemplacen líneas nuevas con espacios con algunas opciones adicionales. La estructura de mando es la siguiente:
Echa un vistazo al siguiente comando:
El comando echo imprime la cadena en STDOUT . El flujo STDOUT luego se canaliza a sed. Le hemos indicado a sed que reemplace cualquier instancia de rápido para que sea reemplazada por rápido. Finalmente, la salida se imprime en la pantalla.
Sustitución de líneas nuevas con espacio
Para demostración, he creado el siguiente archivo de texto test.txt con varios contenidos ficticios:
El comando sed acepta expresiones regulares para describir varios patrones. Aprovechando esta función, describiremos la nueva línea como n. Intentemos reemplazar las líneas nuevas con espacios en blanco:
Sin embargo, eso no funcionó como se esperaba. Para lograr este objetivo, necesitamos algunas opciones adicionales. Echa un vistazo al siguiente comando:
El comando sed tiene múltiples secciones; cada uno denota una tarea específica:
- :a: Crea una etiqueta ‘a’
- N: agrega la siguiente línea al espacio del patrón
- $!ba: si no es la última línea, regresa a la etiqueta ‘a’
- s/n/ /g: busca y reemplaza la nueva línea (n) con un espacio (/ /). El patrón coincide globalmente (/g)
El comando sed recorre los pasos hasta llegar a la última línea, sustituyendo todos los caracteres n por espacios.
En lugar de este comando complejo, podemos simplificar las cosas usando el indicador -z que especifica que sed funcione con registros separados por valores nulos. El comando se vería así:
Metodos alternativos
Si bien sed puede hacer la tarea muy bien, existen algunas herramientas alternativas. En esta sección, examinaremos brevemente un par de ellos.
Para el siguiente ejemplo, podemos usar el comando tr para reemplazar nueva línea con espacios en blanco de una manera simple:
También podemos usar perl para hacer el trabajo. La siguiente sintaxis también es similar a la que usamos con sed (pero simplificada):
Otra forma de reemplazar líneas nuevas con espacios en blanco es usar el comando pegar. Tenga en cuenta que solo puede eliminar un carácter:
Similar a sed, Linux viene con otra herramienta awk. Similar a sed, también puede realizar algunos reemplazos avanzados en la entrada. Para nuestro propósito, use el siguiente comando awk:
Conclusión
Esta guía exploró cómo podemos reemplazar nueva línea con espacio usando sed. Se logró de dos maneras diferentes. Esta guía también incluye otras herramientas relevantes que podemos usar para reemplazar la nueva línea con espacios en blanco.
En lugar de usar comandos complejos que son difíciles de memorizar, usamos secuencias de comandos Bash para realizar muchas cosas en Linux. Aunque tiene el costo de algo de rendimiento, la flexibilidad y la facilidad de uso valen la pena. Obtenga más información sobre las secuencias de comandos de Bash para principiantes .