如何从lshw grep两行?


10

我想grep主板序列号和计算机的产品型号。我用了

sudo lshw | grep -m1  serial:

grep序列号(因为多次出现“ serial:”,而我想要的是第一个。因此,我该如何同时对“ product:”进行grep呢?也有多次出现product,第一个又是我想要的那个

lshw 返回此:

user@ubuntu:~$ sudo lshw
ubuntu-pc              
    description: Notebook
    product: 23252DG (LENOVO_MT_2325)
    vendor: LENOVO
    version: ThinkPad X230
    serial: R9TWZVR
    width: 64 bits
    capabilities: smbios-2.7 dmi-2.7 vsyscall32
    configuration: administrator_password=disabled chassis=notebook family=ThinkPad X230 power-on_password=disabled sku=LENOVO_MT_2325 uuid=01ECC0B1-8251-CB11-8538-B7D9EC435D9B
  *-core
       description: Motherboard
       product: 23252DG
       vendor: LENOVO
       physical id: 0
       version: Not Defined
       serial: 1ZPAB2AC2C1
       slot: Not Available
     *-cpu
          description: CPU
          product: Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz
          vendor: Intel Corp.
          physical id: 1
          bus info: cpu@0
          version: Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz
          serial: None

Answers:


16

您希望前两行与product:或匹配serial:。如果是这样,您可以尝试:

$ sudo lshw | grep -Em2 'serial:|product:'
    product: 20FWCTO1WW (LENOVO_MT_20FW_BU_Think_FM_ThinkPad T460p)
    serial: PF0P1EUH

或者,grep所有与任一目标字符串匹配的行,然后head仅用于打印前两个:

$ sudo lshw | grep -E 'serial:|product:' | head -n2
    product: 20FWCTO1WW (LENOVO_MT_20FW_BU_Think_FM_ThinkPad T460p)
    serial: PF0P1EUH

当然,这两种方法都假定您永远不会product:比第一者serial:更早,反之亦然。


15

lshw--class-c开关一起使用,仅显示system该类,而您不必担心仅提取第一个事件:

lshw -c system | grep -E 'product:|serial:'

如果您不想使用-c system,可以在第一次出现以下情况时使用sedquit serial

lshw | sed '/serial/q;/product/!d'

如果只需要这些值,则可以使用jq

lshw -json -c system | jq '.product,.serial'

假设您以root用户身份运行这些命令。


真好!出于好奇,您怎么知道要使用它system?我看不到中提到的内容man lshw。我们可以确定-c system始终显示主板详细信息,而没有其他信息吗?
terdon

1
@terdon-它在手册中:如果运行lshw -short(以查看硬件类),输出将不言自明
don_crissti

1
嗯,就是这样,谢谢。显然,我只阅读了-c手册中本节的第一句话,却错过了准确解释这一点的第二句话。感叹
terdon

3

使用grep-class选项:

sudo lshw -class system | grep 'product\|serial'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.