কিভাবে lshw থেকে দুটি লাইন গ্রেপ?


10

আমি মাদারবোর্ডের সিরিয়াল নম্বর এবং একটি কম্পিউটারের পণ্য মডেলটি গ্রেপ করতে চাই। আমি ব্যবহার করতাম

sudo lshw | grep -m1  serial:

সিরিয়াল নম্বর গ্রেপ করতে (যেহেতু "সিরিয়াল:" এর একাধিক ঘটনা রয়েছে এবং আমি যেটি চাই তা প্রথমটি I আমি কীভাবে এটি করতে পারি এবং একই সাথে "প্রোডাক্ট:" এর জন্য গ্রেপ করতে পারি? এছাড়াও এখানে পণ্যটির একাধিক উপস্থিতি রয়েছে, এবং প্রথমটি হ'ল আমি চাই।

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:বা 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করতে না চান তবে আপনি প্রথমবারের মতো ব্যবহার করতে sedএবং qইউটি করতে পারেন serial:

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

আপনার যদি কেবলমাত্র মানগুলি ব্যবহার করতে পারেন তবে jq:

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

ধরে নিই যে আপনি এই কমান্ডগুলি মূল হিসাবে চালাচ্ছেন।


নিস! কৌতূহলের বাইরে আপনি কীভাবে ব্যবহার করতে জানেন system? আমি এতে উল্লিখিত দেখতে পাচ্ছি না man lshw। আমরা কি আস্থা রাখতে পারি যে -c systemসর্বদা মাদারবোর্ডের বিবরণ প্রদর্শন করবে এবং অন্য কিছুই নয়?
টেরডন

1
@ ইটারডন - এটি ম্যানুয়ালটিতে রয়েছে: আপনি যদি চালান lshw -short(হার্ডওয়্যার ক্লাসগুলি দেখতে) আউটপুটটি
স্বতঃব্যক্তিক

1
আহ, তাই তাই, ধন্যবাদ। স্পষ্টতই, আমি কেবল -cম্যানুয়ালটিতে বিভাগটির প্রথম বাক্যটি পড়েছি এবং দ্বিতীয়টি মিস করেছি যা এটি স্পষ্টভাবে ব্যাখ্যা করেছিল। দীর্ঘশ্বাস
টেরডন

3

ব্যবহার grepএবং -classবিকল্প:

sudo lshw -class system | grep 'product\|serial'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.