Reemplazo con sed

Resuelto
CYG -  
jipicy Mensajes publicados 40842 Fecha de registro   Estado Moderador Última intervención   -
Hola,
necesito ejecutar un comando shell que contiene una tabulación, y no sé cómo hacerlo con cygwin, el comando es el siguiente:
"find sed -i 's/PROCESS M/c PROCESS M/' {} \;"
sabiendo que entre PROCESS y M hay 2 tabulaciones

alguien puede ayudarme

gracias de antemano
CYG
Configuración: Windows 2003 Internet Explorer 6.0

4 respuestas

  1. jipicy Mensajes publicados 40842 Fecha de registro   Estado Moderador Última intervención   4 898
     
    Hola,

    Tu pedido ya no tiene sentido ;-\

    ¿Y luego qué quieres hacer con "sed"? (en tu ejemplo quieres reemplazar "Process M" por "Process M")

    ¿Las 2 tabulaciones están en la parte izquierda o derecha de "sed"?

    PD. Usa las etiquetas "< code >" y "</ code >" (sin espacios después de los signos de menor y antes de los signos de mayor) para formatear el texto en el foro :
    $ echo -e "A\t\tB" A B $ echo -e "A\tB" A B 
    ;-))

    --

    Z'@+...che.
    JP : Zen, my Nuggets ! ;-) El conocimiento solo es valioso si se comparte.
    3
    1. CYG
       
      Je veux remplacer "<c PROCESS\t\tM>" par "<c PROCESS\t\tM>" (la différence c'est le "c "), mais maintenant j'ai fait une mauvaise manipulation, une fausse manœuvre, j'ai cru que "<[\t]>" représente la tabulation et comme résultat dans mes fichiers j'ai ça "<c PROCESS[ ][ ]M>" et moi je ne veux pas que les accolades s'affichent, pouvez-vous m'aider s'il vous plaît.

      La commande est "<find . -type f -name "doris1.in" -exec sed -i 's/PROCESS[\t][\t]M/c PROCESS[\t][\t]M/' {} \;>"

      En plus de ça, elle a appliqué la modification sur tous mes fichiers doris1.in qui appartiennent à d'autres sous-répertoires ; je voulais juste tester la commande sur un fichier, mais elle s'est appliquée sur tous les fichiers.
      0
  2. jipicy Mensajes publicados 40842 Fecha de registro   Estado Moderador Última intervención   4 898
     
    Ya en regla general, ¡nunca se prueba con el switch "-i"!!! No pones nada y así al menos ves el resultado en pantalla, o pones "-i.BAK" y te crea un archivo de respaldo...

    ¿Puedes poner un archivo "doris1.in" en "cjoint", por favor, para que no cometamos más errores y estemos seguros de la sintaxis a utilizar (en caso de que haya caracteres que te hayan pasado desapercibidos).
    echo -e "PROCESS[\t][\t]M" | sed 's/PROCESS\[\t\]\[\t\]M/c PROCESS\t\tM/' c PROCESS M
    ;-))

    --

    Z'@+...che.
    JP : Zen, mis Nuggets ! ;-) El conocimiento solo es útil si se comparte.
    0
    1. CYG
       
      ¿Dónde debo poner el nombre del archivo para tu pedido?
      Gracias
      CYG
      0
  3. jipicy Mensajes publicados 40842 Fecha de registro   Estado Moderador Última intervención   4 898
     
    Voici la traduction demandée : Voilà la première commande à appliquer pour retrouver tes tabulations sans les crochets (quites le "-n" et le "p" final si le résultat est bon et remplace-le par "-i" ou "-i.bak") :
    sed -n 's/PROCESS\[\t\]\[\t\]M/PROCESS\t\tM/p' doris1.in
    et la seconde pour prendre en compte la ligne oubliée (enfin si c'est vraiment un oubli, vu qu'il y a des espaces vides avant les 2 tabulations) au-dessus de 2 autres (idem pour celle-là pour les "-n" et "p"):
    sed -n 's/PROCESS[ ]*\t\tM/ c &/p' doris1.in
    ;-))

    --

    Z'@+...che.
    JP : Zen, mes Nuggets ! ;-) Le savoir n'est bon que s'il est partagé.
    0
    1. CYG
       
      hola;

      gracias, tu pedido es perfecto
      ;)
      CYG
      0
  4. jipicy Mensajes publicados 40842 Fecha de registro   Estado Moderador Última intervención   4 898
     
    De nada ;-))

    --

    Z'@+...che.
    JP: Zen, mis Nuggets! ;-) El conocimiento solo es valioso si se comparte.
    0