如何从lspci中提取出pci代码

时间:2018-04-17 09:28:34

标签: bash ubuntu grep

我需要为我的gpus提取pci代码。我怎么能这样做?

我跑的时候:

lspci -nnk | grep -i nvidia

我明白了:

02:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:1b06] (rev a1)
    Kernel driver in use: nvidia
    Kernel modules: nvidiafb, nouveau, nvidia_384_drm, nvidia_384
02:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:10ef] (rev a1)
03:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:1b06] (rev a1)
    Kernel driver in use: nvidia
    Kernel modules: nvidiafb, nouveau, nvidia_384_drm, nvidia_384
03:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:10ef] (rev a1)

我想提取出来:

02:00.002:00.1以及其他nvidia ID,以便提供给后续脚本。

4 个答案:

答案 0 :(得分:1)

使用awk

lspci -nnk | awk '/NVIDIA/{print $1}' 

将打印包含NVIDIA的每一行的第一个单词。

答案 1 :(得分:0)

尝试:

lspci -nnk | grep -i nvidia | awk '{print $1}'

答案 2 :(得分:0)

要仅获取PCI总线地址,请将grep命令更改为:

grep -Pio '^[.-:]*(?=.*nvidia)'

答案 3 :(得分:0)

Perl解决方案:

app.module.ts
  • lspci -nnk | perl -anE '/nvidia/i && $F[0] =~ /^[0-9a-f:.]+$/i && say $F[0]' - 在空白处拆分
  • -a - 循环线但不打印
  • -n - 在循环内执行的命令

  • -E <command> - 匹配包含/nvidia/的行(不区分大小写)

  • nvidia - 该行的第一列(由$F[0] =~ /^[0-9a-f:.]+$/拆分)匹配十六进制数字,冒号和点中的一个或多个