我需要为我的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.0
和02:00.1
以及其他nvidia ID,以便提供给后续脚本。
答案 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:.]+$/
拆分)匹配十六进制数字,冒号和点中的一个或多个