次のスキーマがあり、/sys/bus/pci/devices/と/deviceの間に1つのフィールドのみを解析したいと思います。
例 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)'