User Tag List

Resultados 1 al 13 de 13

Tema: ¿Cómo reemplazar texto en varios ficheros a la vez?

  1. #1

    Fecha de ingreso
    May 2004
    Ubicación
    Coslada, Madrid
    Mensajes
    13,259
    Mencionado
    2 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    12
    Thanked in
    Agradecido 9 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    6

    ¿Cómo reemplazar texto en varios ficheros a la vez?

    Hola,

    Tengo que reemplazar unas rutas de un montón de Makefiles por otras rutas y me parece que debe haber alguna opción mejor que ir abriéndolos uno a uno con un editor de texto y reemplazar dichas cadenas.

    ¿Conocéis de algún programa (mejor si es para Linux, pero tampoco importa que sea de Windows) o comando de shell de Linux que me permita hacerlo de golpe?

    Gracias

  2. #2

    Fecha de ingreso
    Aug 2005
    Mensajes
    3,386
    Mencionado
    1 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    2
    Thanked in
    Agradecido %1$s veces en 1 post
    UltraEdit (para Windows), o eso creo: "Find in Files/Replace in Files option for UNICODE Searches". Es de pago pero hay una versión trial de 30 días.

    Edito: Confirmado. Lo acabo de probar.
    Última edición por miq01; 18/12/2005 a las 09:19

  3. #3

    Fecha de ingreso
    Nov 2005
    Ubicación
    Lleida, Catalunya, España
    Mensajes
    312
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    O en linux puedes hacer un script en bash que use el awk, que es muy usado para tratamiento de cadenas.
    Busca algun tutorial, y eso despues lo puedes aprovechar para otras cosas.

  4. #4

    Fecha de ingreso
    May 2004
    Ubicación
    Coslada, Madrid
    Mensajes
    13,259
    Mencionado
    2 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    12
    Thanked in
    Agradecido 9 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    6
    Muchas gracias a los dos, además del script que me ha pasado Kaos, también he encontrado un programita de Linux, rpl, que lo hace automáticamente

    A ver como sigue la compilación mañana, que ya es hora de acostarse

    Saludos

  5. #5

    Fecha de ingreso
    Jan 2004
    Ubicación
    USSC Discovery One
    Mensajes
    1,264
    Mencionado
    3 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    16
    Agradecer Thanks Received 
    9
    Thanked in
    Agradecido 5 veces en [ARG:2 UNDEFINED] posts
    En linux puedes usar sed que es un programa de línea de comando especial para sustituir cadenas

    Aquí un pequeño script para ilustrar el funcionamiento

    Código:
    #!/bin/bash
    a=`ls a*.txt `
    
    for i in $a
    do
            sed 's/\\Carlos/\\Rafa/g' $i > $i.new
    done
    En todo los archivos del directorio donde se ejecute que sean a*.txt cambia la cadena \Carlos por \Rafa. Los archivos resultantes tienen el mismo nombre que el original con el .new al final es decir a*.txt.new.

    Una vez comprobado que funcione correctamente puedes añadir al bucle for

    mv $i.new $i

    Para darles de nuevo el nombre original, pero una vez estés seguro no vayas a pisar los archivos originales con archivos vacíos y suframos el foro una perdida irreparable

    Pero seguro que hay alguna forma más sencilla de hacerlo, esto es solo un apaño rápido

    Un pequeño tutorial sobre el uso básico del sed en:

    http://www.cs.hmc.edu/tech_docs/qref/sed.html

    De todas formas si me dices los paths a cambiar te puedo preparar el script
    Última edición por kraff2; 18/12/2005 a las 09:42

  6. #6

    Fecha de ingreso
    Jun 2004
    Ubicación
    Vivo en el pito foro...
    Mensajes
    20,686
    Mencionado
    70 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    230
    Agradecer Thanks Received 
    742
    Thanked in
    Agradecido 466 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    28
    Dios, una pregunta de linux que yo podia responder con tan solo 5 clases en la uni. Gracias Pedrero!!!!

  7. #7

    Fecha de ingreso
    Feb 2005
    Ubicación
    Cádiz / Madrid
    Mensajes
    2,679
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Y si quieres hacerlo comodamente sin necesidad de sed, rpl, awk o crearte un script para usar estos comandos de forma más automatizada, tienes KFileReplace y es que esto de KDE y KParts es una gozada

    .:: Yo, ya ni veo el código. Solo veo una rubia, una morena, una pelirroja... - Cifra (The Matrix) ::.

  8. #8

    Fecha de ingreso
    Jun 2010
    Mensajes
    2
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Disculpen por revivir el post pero google me mando aqui

    que pasa si quiero reemplazar direcciones U_R_L

    por ejemplo si hago


    [root@server src]# sed -e 's/ http : //w w w. direc cion1 .com/index.jsp / ht t ps: //w w w. direccion2. com/index2.jsp / g' test11 .html > test11 .html .new

    me bota el siguiente error

    sed: couldn't open file ww / ht t p s://w wws /g: No such file or directory


    dentro de test11 .html hay muchas direcciones web

    he intentado poner las direcciones web entre "" , '' , ´´ sin tener exito
    alguien me puede ayudar ?
    Última edición por general9000; 23/06/2010 a las 19:06

  9. #9
    Yeti Sports 1 Champion!
    Fecha de ingreso
    Mar 2005
    Ubicación
    Currando pofin!
    Mensajes
    10,496
    Mencionado
    50 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    173
    Agradecer Thanks Received 
    319
    Thanked in
    Agradecido 167 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    22
    trecemilsetecientoscuarentaytres

  10. #10

    Fecha de ingreso
    Jan 2004
    Ubicación
    USSC Discovery One
    Mensajes
    1,264
    Mencionado
    3 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    16
    Agradecer Thanks Received 
    9
    Thanked in
    Agradecido 5 veces en [ARG:2 UNDEFINED] posts
    Buen reflote jeje

    El error que te da es debido a los caracteres especiales de la url / para solucionarlo debes ejecutar la orden de la siguiente forma:

    Código:
    sed -e 's/http:\/\/www.direccion1.com/https:\/\/www.direccion2.com/g' test11.html > test11.html.new

  11. #11

    Fecha de ingreso
    Jun 2010
    Mensajes
    2
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    muchas gracias por tu respuesta n_n ^^

  12. #12

    Fecha de ingreso
    May 2008
    Ubicación
    A tu lado, en tus sueños
    Mensajes
    22,309
    Mencionado
    145 Post(s)
    Tagged
    1 Tema(s)
    Agradecer Thanks Given 
    319
    Agradecer Thanks Received 
    552
    Thanked in
    Agradecido 424 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    3
    Yo utilizo el Notepad++. Va de lujo.

  13. #13

    Fecha de ingreso
    Jul 2009
    Mensajes
    8,737
    Mencionado
    64 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    937
    Agradecer Thanks Received 
    571
    Thanked in
    Agradecido 345 veces en [ARG:2 UNDEFINED] posts
    para no tener que usar un temporal con el sed esta el parametro -i, si tenemos por ejemplo, subcarpetas con Makefile en el primer nivel de directorios, podemos hacer:

    sed -i 's/lalala/newlala/g' */Makefile

    o tambien si necesitamos incluir '/' en la string, podemos escapear con '\' o usar ',' de separador

    sed -i 's,lalala,newlala,g' */Makefile


    lalala es la string a buscar
    newlala la string nueva

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •