Ita*_*ham 3 freebsd text-processing
我有以下字符串:
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
Run Code Online (Sandbox Code Playgroud)
我必须在 where 'class = baseperipheral' 之前删除 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
Run Code Online (Sandbox Code Playgroud)
我没有设法做到这一点,这是在 FreeBSD 操作系统中完成的。
ed -s file <<EOF
g/base peripheral/-3;+4d
%p
EOF
Run Code Online (Sandbox Code Playgroud)
printf '%s\n' 'g/base peripheral/-3;+4d' '%p' | ex -s file
Run Code Online (Sandbox Code Playgroud)
该g叶形标记与“基地周”的所有行和deletes给定范围内。然后%p打印文件。您可以使用w来保存对文件的更改。