| Subcribe via RSS

La consola de Linux - sustituir un texto en un fichero

Noviembre 21st, 2006 Posted in linux, ubuntu

En más de una ocasión nos encontraremos con la necesidad de cambiar todas las ocurrencias de una palabra o texto de un fichero por otro. Existen varios programas que nos permiten hacerlo e incluso podemos usar la herramienta de reemplazar de nuestro editor de textos favorito. Sin embargo también podemos hacerlo desde la consola usando el comando sed. Este comando permite leer un fichero, hacer modificaciones al texto y guardarlo en otro fichero (sed es mucho más versátil que eso, pero es una buena simplificación).

Por ejemplo, para sustituir los ‘;’ por tabuladores en un fichero (el tabulador es el símbolo ‘\t’) podemos usar el comando:

sed -e 's/;/\t/g' fichero_origen.txt > fichero_destino.txt

que cambiará los ‘;’ del fichero_origen.txt por tabuladores y guardará el resultado en el fichero fichero_destino.txt. Evidentemente, si queremos que los cambios se guarden en el mismo fichero basta con hacer una pequeña modificación:

sed -e 's/;/\t/g' fichero_origen.txt > fichero_origen.txt

’s/;/\t/g’ es lo que se llama una expresión regular, muy usadas en la edición de ficheros. Las expresiones regulares son un poco complicadas de aprender, pero una vez que las manejas con cierta soltura te preguntas cómo podías vivir sin ellas (ojo, si te lo preguntas con mucha intensidad quizá es el momento de dedicar más tiempo a tu vida social). En otro post hablaré más extensamente sobre las expresiones regulares.

Voy a completar este post con otro ejemplo; vamos a sustituir las apariciones de ‘cabeza’ por el texto ‘pie’ en un fichero:

sed -e 's/cabeza/pie/g' fichero_origen.txt > fichero_destino.txt

por si quedaba alguna duda :-).

Entradas relacionadas

  1. La consola de Linux - hacer un fichero ejecutable
  2. La consola de Linux - Controlar los procesos con ps
  3. La consola de Linux - cambiar directorios rápidamente
  4. La consola de Linux III - diciendo que sí a todo
  5. La consola de Linux - programar el apagado del ordenador
Valoración:
1 Estrella2 Estrellas3 Estrellas4 Estrellas5 Estrellas (1 votos, media: 4 de 5)
Loading ... Loading ...

3 Responses to “La consola de Linux - sustituir un texto en un fichero”

  1. yo Says:

    Deberias probar los comandos antes de publicarlos en un post.

    Me estoy volviendo loco de como realizar reemplazos directamente sobre el mismo fichero sin emplear uno temporal.

    sed -e ’s/;/t/g’ fichero_origen.txt > fichero_origen.txt

    Esto fue lo primero que se me ocurrión intentar, la consecuencia de esto es que el contenido del fichero_origen.txt es borrado.

    Espero que si a alguien se le haya ocurrido seguir tu explicación no haya probado directamente sobre un fichero importante


  2. adresc Says:

    Modificarlos y guardalos sobre si mismos, esto te sirve

    http://listas.inf.utfsm.cl/pipermail/linux/2005-November/024935.html


  3. David Says:

    uhm, meter el mismo comando, pero con dos modificadores en vez de uno, y guardarlo con otro nombre la salida, por supuesto.
    Es una solución a la chapuza de post que ha echo aquí el fiera (sin ofender, pero es una chapuza que puede acarrear ciertos problemas a los que lo haya probado).

    sed -e ’s/;/t/g’ fichero_origen.txt >> fichero_origen.txt

    Informaros.. y “sed” buenos.


Leave a Reply