一致する行の後の X 行とその前の Y 行を削除します。

一致する行の後の X 行とその前の Y 行を削除します。

次の文字列があります。

core1@pci0:2:0:1:  class=0x020000 rev=0x00 hdr=0x00 vendor=0x1453
    vendor     = 'MicSystem'
    device     = 'controller'
    class      = network
    subclass   = ethernet
none65@pci0:2:0:2:      class=0x080100 rev=0x00 hdr=0x00 vendor=0x1453
    vendor     = 'MicSystem'
    device     = 'interface'
    class      = base peripheral
    subclass   = DMA controller
core1@pci0:2:0:1:  class=0x020000 rev=0x00 hdr=0x00 vendor=0x1453
    vendor     = 'MicSystem'
    device     = 'controller'
    class      = network
    subclass   = ethernet

"class = Base Peripheral"の前に3行、その後に1行を削除する必要があります。たとえば、次のようになります。

core1@pci0:2:0:1:  class=0x020000 rev=0x00 hdr=0x00 vendor=0x1453
    vendor     = 'MicSystem'
    device     = 'controller'
    class      = network
    subclass   = ethernet
core1@pci0:2:0:1:  class=0x020000 rev=0x00 hdr=0x00 vendor=0x1453 
    vendor     = 'MicSystem'
    device     = 'controller'
    class      = network
    subclass   = ethernet

私はこれを行うことができませんでした。これはFreeBSDオペレーティングシステムで行われました。

ベストアンサー1

実際の使用エドまたは前任者:

ed -s file <<EOF
g/base peripheral/-3;+4d
%p
EOF
printf '%s\n' 'g/base peripheral/-3;+4d' '%p' | ex -s file

lobal はgすべての行を「デフォルト境界」としてマークし、d指定された範囲を削除します。次に%pファイルを印刷します。wを使用してファイルの変更を保存できます。

おすすめ記事