GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo usar sed para eliminar solo líneas dobles vacías?

He comentado el sed comando que no entiendes:

sed '
    ## In first line: append second line with a newline character between them.
    1N;
    ## Do the same with third line.
    N;
    ## When found three consecutive blank lines, delete them. 
    ## Here there are two newlines but you have to count one more deleted with last "D" command.
    /^\n\n$/d;
    ## The combo "P+D+N" simulates a FIFO, "P+D" prints and deletes from one side while "N" appends
    ## a line from the other side.
    P;
    D
'

Eliminar 1N porque solo necesitamos dos líneas en la 'pila' y es suficiente con el segundo N y cambie /^\n\n$/d; a /^\n$/d; para eliminar las dos líneas en blanco consecutivas.

Una prueba:

Contenido de infile :

1


2
3

4



5

6


7

Ejecute el sed comando:

sed '
    N;
    /^\n$/d;
    P;
    D
' infile

Eso produce:

1
2
3

4

5

6
7

Esto sería más fácil con awk :

awk -v RS='\n\n\n' 1

Esto sería más fácil con cat :

cat -s

sed '/^$/{N;/^\n$/d;}'

Eliminará solo dos líneas en blanco consecutivas en un archivo. Puede usar esta expresión solo en el archivo, entonces solo usted puede entenderla completamente. Cuando venga una línea en blanco, entrará entre llaves.

Normalmente, sed leerá una línea. N agregará la segunda línea al espacio del patrón. Si esa línea es una línea vacía. ambas líneas están separadas por nueva línea.

/^\n$/ este patrón coincidirá con ese tiempo solo el d trabajará. De lo contrario d no trabajo. d se utiliza para eliminar todo el contenido del espacio del patrón y luego comenzar el siguiente ciclo.


Linux
  1. Con el comando "cat" de Linux, ¿cómo mostrar solo ciertas líneas por número?

  2. ¿Cómo usar Awk para imprimir solo líneas que contienen 5 columnas?

  3. sed para insertar solo en la primera coincidencia

  4. Eliminar líneas vacías usando sed

  5. sed - insertar línea después de X líneas después del partido

¿Cómo usar el proxy en la línea de comandos de Linux?

Cómo quitar líneas de un archivo usando el comando Sed

Cómo eliminar líneas vacías en archivos usando Grep, Sed y Awk

Cómo encontrar las líneas más largas en un archivo en Linux

CÓMO UTILIZAR EL EDITOR SED

Cómo eliminar varias líneas en Vim