Como grep invertido não mostrando x linhas antes / depois? [duplicado]

2

O que eu preciso é fácil de explicar, mas não consegui :-( Eu quero grep uma saída de comando não mostrando as linhas correspondentes e x linhas após que. Por exemplo.

# fdisk -l
Disk /dev/ram0: 64 MiB, 67108864 bytes, 131072 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/ram1: 64 MiB, 67108864 bytes, 131072 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Eu quero pular linhas com 'ram' string e 6 linhas depois disso, então a saída seria apenas:

Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Algo como sudo fdisk -l | grep -v "ram" -A 6

Atenciosamente.

    
por Damon Hill 05.12.2016 / 19:24

1 resposta

1

Outra abordagem com o GNU sed:

| sed '/ram/,/^$/d;/^$/d'

Saída:

Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    
por 05.12.2016 / 21:08