如何收集文件中的特定信息

如何收集文件中的特定信息

我需要不同的硬件信息。例如序列号,功能等等,为此,我找到了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 ID,,,,等等......Hardware classmodelSerial IDDevice File

但问题不止于此,因为除了磁盘信息之外,还需要 CPU、内存等。我如何选择这些信息并将其保存到文本文件中?经过一番研究,我发现了和SEDAWK但我认为使用这两个程序实现 caputra 信息会很费力,或者是正确的路径?

答案1

虽然 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 输出生成的。)

答案2

尝试从使用带有抑制和打印功能的 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.

相关内容