Linuxシェルスクリプトを使用して特定の文字列の特定のキーを解析する方法

Linuxシェルスクリプトを使用して特定の文字列の特定のキーを解析する方法

次のスキーマがあり、/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)'

関連情報