Sé que hay una pregunta similar en la Cómo se puede reemplazar varias líneas vacías con una sola línea vacía en bash?. Pero mi pregunta es ¿puede esto ser implementadas por el solo uso de la sed comando?

Gracias

  • Trate de leer todas las respuestas la próxima vez: stackoverflow.com/questions/922449/…
  • En realidad he leído todas las respuestas. La respuesta de Pista Menos y Puede Berk Güder proporcionados son solo quitar todas las líneas vacías, no es el mismo como lo que yo necesitaba.
  • -me cambio? sed-i ‘/^$/d’ text.txt debería funcionar, y como he comprobado es la respuesta de lista (además de la opción-i).
  • esto eliminará todas las líneas vacías, en lugar de reducir en uno.
InformationsquelleAutor Ogrish Man | 2010-12-23

2 Comentarios

  1. 44

    Dar a este un intento:

    sed '/^$/N;/^\n$/D' inputfile
    
    • +1 de todos Modos, el ejemplo es la mejor, ya que el proceso que conduce & trailing líneas vacías correctamente, mientras que el mío simplemente tira de ellos.
    • La coincidencia de nueva línea al principio de la línea no es necesario, simplemente la coincidencia de la nueva línea es suficiente.
  2. 1

    Usted puede hacer esto mediante la eliminación de líneas en blanco primero y añadiendo la línea de espacio con G comando:

    sed '/^$/d;G' text.txt
    

    Edit2: el comando añadir líneas en blanco entre cada párrafo, si este no es el deseado, se podría:

    sed -n '1{/^$/p};{/./,/^$/p}'
    

    O, si no te importa que todas las principales líneas vacías serán despojados, puede ser escrita como:

    sed -n '/./,/^$/p'
    

    desde la primera expresión sólo se evalúa la primera línea, y lo imprime si está en blanco.

    Aquí: -n opción suprime el patrón espacio de auto-impresión, /./,/^$/ define el rango de entre al menos un carácter y ninguno de caracteres (es decir, un espacio vacío entre los saltos de línea) y p le dice a la impresión de este rango.

Dejar respuesta

Please enter your comment!
Please enter your name here