Tengo una línea con espacios en el inicio por ejemplo «Hola mundo».
Quiero insertar esta línea a una línea específica en un archivo.
por ejemplo
inserte el «hola mundo» con el siguiente archivo

hello
world

resultado:

hello
    hello world
world

Estoy utilizando esta sed de secuencia de comandos:

sed -i "${line} i ${text}" $file

el problema es que me estoy haciendo mi nueva línea con los espacios:

hello
    hello world
world
InformationsquelleAutor Yo Al | 2013-08-26

3 Comentarios

  1. 69

    Puede escapar de la space carácter, por ejemplo, para añadir 2 espacios:

    sed -i "${line} i \ \ ${text}" $file

    O usted puede hacerlo en la definición de su text variable:

    text="\ \ hello world"
    • Sólo para escapar el primer espacio. Sed parecen reconocer automáticamente el resto de los espacios. E. g., a\ text añade el texto con 4 espacios en la parte delantera.
    • Gracias! Tal solución elegante!
  2. 18

    Sólo se necesita una \ a la entrada de múltiples espacios en blanco
    como este

    sed -i "${line} i \    ${text}" $file
  3. 4
    $ a="  some string  "
    $ echo -e "hello\nworld"
    hello
    world
    $ echo -e "hello\nworld" | sed "/world/s/.*/${a}.\n&/" 
    hello
      some string  .
    world

    La . fue añadido en la sustitución de arriba para demostrar que detrás de la whitepsaces se conservan. Uso sed "/world/s/.*/${a}\n&/" lugar.

Dejar respuesta

Please enter your comment!
Please enter your name here