前後に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バイト

関連情報