shell命令捕获特定块中的行
当我有一个如下的usb主机列表时,我想根据制造商筛选出特定的块:然后获取块的UUID。 我可以使用哪些命令shell命令捕获特定块中的行,shell,grep,Shell,Grep,当我有一个如下的usb主机列表时,我想根据制造商筛选出特定的块:然后获取块的UUID。 我可以使用哪些命令 UUID: 9b379e15-83e6-406b-8ddc-46b2268d06b9 VendorId: 0x046d (046D) ProductId: 0xc018 (C018) Revision: 67.1 (6701) Port: 0 USB version/speed
UUID: 9b379e15-83e6-406b-8ddc-46b2268d06b9
VendorId: 0x046d (046D)
ProductId: 0xc018 (C018)
Revision: 67.1 (6701)
Port: 0
USB version/speed: 2/2
Manufacturer: Logitech
Product: USB Optical Mouse
Address: {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0000
Current State: Busy
UUID: 464a8063-3f98-4b2f-885b-0168fbfd568a
VendorId: 0x04b4 (04B4)
ProductId: 0x0101 (0101)
Revision: 0.1 (0001)
Port: 0
USB version/speed: 1/1
Product: Cypress USB Keyboard / PS2 Mouse
Address: {36fc9e60-c465-11cf-8056-444553540000}\0050
Current State: Busy
UUID: 41319bf4-1af5-4abb-8201-630d3e6e03eb
VendorId: 0x1004 (1004)
ProductId: 0x631f (631F)
Revision: 2.40 (0240)
Port: 0
USB version/speed: 2/2
Manufacturer: THIS
Product: Android Phone
SerialNumber:
Address: \\?\usb#vid_80ee&pid_cafe#lg-f180l-1c497609#{00873fdf-cafe-80ee-aa5e-00c04fb1720b}
Current State: Captured
UUID: ad6967c2-4026-496c-98e4-22033ac9a9bc
VendorId: 0x18e8 (18E8)
ProductId: 0x6260 (6260)
Revision: 5.64 (0564)
Port: 0
USB version/speed: 2/2
Manufacturer: Broadcom Corp
Product: Bluetooth USB
SerialNumber: 000DF09A94B8
Address: {e0cbf06c-cd8b-4647-bb8a-263b43f0f974}\0002
Current State: Busy
我认为最简单的方法是使用AWK或Perl之类的语言。使用Perl:
perl -nwe ' BEGIN { $/ = "" }
next unless m/^Manufacturer: +THIS$/m;
print "$1\n" if m/^UUID: +([0-9a-f-]+)$/m;
' < input_file > output_file
perl-nwe'开始{$/=“”
下一个,除非m/^制造商:+此$/m;
如果m/^UUID:+([0-9a-f-]+)$/m,则打印“$1\n”;
“output\u file”
假设UUID始终是每个块的第一行:
awk 'BEGIN{RS="\n\n";FS="\n"}/Manufacturer: *Logitech/{print $1}' test.in
当然,请将“Logitech”更改为您想要的制造商。欢迎使用StackOverflow。你自己有没有努力弄清楚?如果没有,你至少应该试试。如果有,请回答您的问题,并向我们展示您的尝试,并解释它对您不起作用的方式。