lshwから2行を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

回答:


16

product:またはに一致する最初の2行が必要serial:です。もしそうなら、あなたは試すことができます:

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

または、grepいずれかのターゲット文字列に一致するすべての行を使用headして、最初の2つだけを印刷します。

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

もちろん、これらのアプローチはどちらもproduct:、最初の1 秒の前に1 秒がないこと、serial:およびその逆は想定されていないことを前提としています。


15

またはスイッチを使用lshwしてクラスのみを表示し、最初のオカレンスのみを抽出することを心配する必要はありません。--class-csystem

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

あなたが使用しない場合-c system、あなたは使用することができますsedqの第1回発生にUIT 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はマニュアルのセクションの最初の文を読んだだけで、それを正確に説明した2番目の文を見逃しました。ため息
terdon

3

使用grep-classオプション:

sudo lshw -class system | grep 'product\|serial'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.