我有以下模式,只想解析 /sys/bus/pci/devices/ 和 /device 之间的一个字段
示例 1 输入:/sys/bus/pci/devices/0000:07:00.0/device:0x017a
所需输出:0000:07:00.0
示例 2 输入:/sys/bus/pci/devices/0000:08:00.0/device:0x0abc
所需输出:0000:08:00.0
答案1
如果您的输入总是那么规律,那么一个简单的cut
命令就可以完成这项工作
cut -d/ -f6
例如
% echo /sys/bus/pci/devices/0000:07:00.0/device:0x017a | cut -d/ -f6
0000:07:00.0
% echo /sys/bus/pci/devices/0000:08:00.0/device:0x0abc | cut -d/ -f6
0000:08:00.0
答案2
如果输入没有固定数量的/
,您也可以使用 grep 和上下文:
$ ... | grep -Po 'devices/\K.*?(?=/device)'