ファイル内の特定の情報を収集する方法


0

さまざまなハードウェア情報が必要です。シリアル番号、機能など、他の多くのものと同様に、私はを見つけましたがhwinfo、必要な情報をはるかに超える情報を取得します。

例えば:

18: IDE 200.0: 10600 Disk
[Created at block.245] 
Unique ID: WZeP.yFECJK3_8V4
Parent ID: w7Y8.7HLn7TSO9I7
SysFS ID: / class / block / sdb
SysFS BusID: 2: 0: 0: 0
SysFS Device Link:/devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0
Hardware Class: disk
Model: "KINGSTON SV300S3"
Vendor: "KINGSTON"
Device: "SV300S3"
Revision: "BBF0"
Serial ID "50026B77470B5AC3"
Driver: "ahci", "sd"
Driver Modules "ahci"
Device File: / dev / sdb
Device Files: / dev / sdb, / dev / disk / by-id / ata KINGSTON_SV300S37A120G_50026B77470B5AC3, / dev / disk / by-id / WWN-0x50026b77470b5ac3
Device Number: block 8: 16-8: 31
BIOS id: 0x81
Geometry (Logical): CHS 14593/255/63
Size: 234441648 sectors 512 bytes
Capacity: 111 GB (120,034,123,776 bytes)
Config Status: config = new, avail = yes, need = no, active = unknown
Attached to: # 13 (controller SATA)

私はこの情報がブロックを取得するために必要なUnique IDHardware classmodelSerial IDDevice File中でも..

しかし、ディスク情報のほかにCPU、メモリなどが必要なため、問題はそこで止まりません。この情報を選択してテキストファイルに保存する方法を教えてください。いくつかの研究をやって、私が見つかりました。SEDそしてAWK、私はこの二つのプログラムでcaputra情報を実装する面倒だろうか、正しいパスになることを信じますか?


出力に必要なものに依存します。また、収集する必要がある入力ファイル(またはコマンドの出力)の数。sed / awkと1、2行のbashで簡単に実行できます。または、多くのスクリプト言語(Perl、Python、Ruby、Node.jsなど)で簡単に実行できます。しかし、すべてはあなたのニーズに依存します...私は必要に応じてsedおよび/またはawkコマンドを含むbashスクリプトから始めます。
ジェハド

回答:


2

sedとawkは強力ですが、これまでに指定した要件については、はるかに単純なものだけが必要ですgrep

$ hwinfo | grep -E 'Unique ID|Hardware class|model|Serial ID|Device File:'
Unique ID: WZeP.yFECJK3_8V4
Serial ID "50026B77470B5AC3"
Device File: / dev / sdb

(上記の出力は、質問に示すようにhwinfo出力を使用して生成されました。)


ただし、たとえば、hwinfo --partition複数のパーティションがある場所を尋ねる場合、複数の情報ブロックが存在する可能性があります。では、Unique IDまたはの複数のインスタンスを分離する方法はHardware class
SoabTI

@MatheusRagosoは、(第一、John1024の答え@完璧であり、決して私は私の答えを指していますが、)異なるインスタンスを分離する方法についてのあなたの質問に答えるために、私はあなたのようなツールを使用して見て提案することができますsedawk、あなたを与えるました特定のテキストブロックのルールを定義するためのより強力な機能... grepは素晴らしいですが、より強力な機能が必要な場合は、他のツールと組み合わせたり、他のツールに手を伸ばしたりできます。
ジェハド

0

抑制と印刷でsedを使用するbash / shellスクリプトから始めてみてください。

たとえば、(そして、私はhwinfoに精通していませんが、stdoutに出力するコマンドであると仮定しています):

hwinfo | sed -n '/^Unique ID.*/p; /^Hardware class.*/p;'

これにより、「一意のID」と「ハードウェアクラス」の行だけが表示されます。

ファイルにキャプチャし、このコマンドを読みやすくするには、を使用>してファイルに出力するだけで、次のように改行できます\

したがって、この:

hwinfo | sed -n '/^Unique ID.*/p; /^Hardware class.*/p;' > myoutputfile.txt

次のように、より多くのパラメータをキャプチャできる複数行コマンドに変換できます。

hwinfo | sed -n '/^Unique ID.*/p;'\
'/^Hardware class.*/p;'\
 > myoutputfile.txt # space at beginning of this line is important.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.