PCI IDの検索 - 次の文字列 [10de:1c81]

PCI IDの検索 - 次の文字列 [10de:1c81]

KVMを使用してLinuxでPCI GPUパススルー設定をスクリプト化しようとしています。以下でpciデバイスIDを見つける必要があります。

root@kvmatrix:~# lspci -nn | grep VGA | grep NVIDIA
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP107 [GeForce GTX 1050] [10de:1c81] (rev a1)

この部分だけを生成するために別の「grep」を追加したいと思います。

10de:1c81

答え1

どのタイプの機器を購入したいのかを知っていれば、その機器を使用する方が簡単です。この場合、「VGA Controller」はクラスなので、次の情報のみを提供することがわかり0300ます。lspci

$ lspci -nd::0300|egrep -o "[[:xdigit:]]{4}:[[:xdigit:]]{4}"

これはegrep検索なので、使用することもできますgrep -E。 1つの項目だけが一致するのでxxxx:xxxxx16進数)、それが私が一致したものです。

一致できる複数のカードがあり、nVidia カードだけが必要な場合は、lspci -nd10de::0300そのベンダーにのみ制限できます。

答え2

この試み:

lspci -nn  | grep -oP 'VGA.*NVIDIA.*\[\K[\w:]+'

-Pまたは、より移植性に優れています(一部の古いLinuxオペレーティングシステムにはスイッチがありません)

lspci -nn  | perl -lne 'print $& if /VGA.*NVIDIA.*\[\K[\w:]+/'

出力:

10de:1c81

ライブデモ右側に説明があります。

答え3

使用discover:ハードウェア検出ユーティリティ

discover --vendor-id --model-id pci | grep NVIDIA | uniq | awk '{print $1":"$2}'

出力例:

10de:1c81

関連情報