전후에 x 줄을 표시하지 않고 반전하는 방법은 무엇입니까? [복사]

전후에 x 줄을 표시하지 않고 반전하는 방법은 무엇입니까? [복사]

필요한 것은 쉽게 설명할 수 있지만 할 수는 없습니다. :-( 명령 출력을 grep하고 싶습니다.일치하는 줄과 x 줄 뒤에 표시하지 않음저것. 예를 들어.

# 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

"ram" 문자열이 있는 줄과 그 뒤의 6줄을 건너뛰고 싶으므로 출력은 다음과 같습니다.

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

그것은 마치sudo fdisk -l | grep -v "ram" -A 6

답변1

GNU sed를 사용하는 또 다른 방법:

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

산출:

디스크 /dev/sda: 931.5 GiB, 1000204886016바이트, 1953525168 섹터
단위: 섹터 1 * 512 = 512바이트
섹터 크기(논리/물리): 512바이트/4096바이트
I/O 크기(최소/최적): 4096바이트/4096바이트

관련 정보