Actualmente, el archivo a.txt ha:

#define ABC

Quiero cambiar a.txt a:

#define ABC
#define DEF

Y traté de

sed 's/#define ABC/#define ABC&\n#define DEF/g' a.txt > tmp/test.txt
mv tmp/test.txt > a.txt

pero me da #define ABC#define ABCn#define EDF lugar. Intentado varias soluciones en línea, pero no está funcionando. Lo que está mal con mi solución? Gracias!!!

De trabajo en Solaris 11

  • stackoverflow.com/a/16246806/632407
  • no veo la manera de que respondió a mi pregunta. Créanme cuando les dijo que ya lo he intentado muchas soluciones y no podía llegar a trabajar. Esto fue lo más cercano a mi caso: stackoverflow.com/questions/682984/… y no funcionó para mí, posible porque tengo # o algo, no sé.
  • Por qué no añadir una línea? echo '#define DEF' >>a.txt
InformationsquelleAutor Dao Lam | 2013-07-02

4 Comentarios

  1. 3

    Intente algo como:

    $ echo '#define ABC' | sed '/ABC$/a\
    > #define DEF'
    #define ABC
    #define DEF

    Nota: Probado en Oracle Solaris 10 9/10 s10s_u9wos_14a SPARC

    • Gracias! Esto funciona. Esencialmente me hizo algo similar para su solución para conseguir que editar el archivo: sed 's/#define ABC/#define ABC \ >#define DEF /' a.txt > new.txt
    • Eres bienvenido. Me alegro de que funcionó. 🙂
  2. 2

    Código de GNU :


    $echo #define ABC|sed 's/.*/&\n#define DEF/' 
    #define ABC 
    #define DEF 
    
    • Gracias por la respuesta. Estoy usando sed en Solaris, por lo que el comando de arriba me dio nada. Alguna idea?
  3. 2

    Nada pero tu ‘&’ era el problema.

    probar este

    sed 's/#define ABC/#define ABC \n#define DEF/g' a.txt
    
    #define ABC
    #define DEF

    He probado en mi máquina unix y está trabajando muy bien

    Por lo que su solución final debe ser como este

    sed 's/#define ABC/#define ABC \n#define DEF/g' a.txt
    a.txt > tmp/test.txt
    mv tmp/test.txt > a.txt
    • Gracias. He intentado lo mismo antes, pero no funcionó. Al final, me di cuenta que es porque yo estaba usando bash en Solaris. Al parecer, el código anterior funciona para bash en Linux, pero no Solaris. Mismo como a sed \a (append). Gracias, la solución debería funcionar, si estoy en Linux.
  4. 1

    El segundo ejemplo en el citado enlace es una solución para usted

    < a.txt sed "/ABC$/a \
    #define DEF
    "

    producirá a partir de la a.txt

    #define ABC

    la salida

    #define ABC
    #define DEF

    O el 5 de ejemplo desde el enlace de arriba

    < a.txt sed "/ABC$/s/$/\
    #define DEF/"

    por lo tanto, LEE!

    • Podría por favor explicar? He intentado de las dos maneras y no funcionan. a.txt sigue siendo el mismo.
    • Cuidado de la downvoter dime lo que está mal con el código? ejemplo agregar la quería línea a la salida.

Dejar respuesta

Please enter your comment!
Please enter your name here