我需要在shel脚本中使用主板的序列号。我知道我应该运行以下命令:
sudo dmidecode -t 2
但问题是这个命令返回一堆文本信息,我只需要检索序列号。这是输出:
# dmidecode 2.12
SMBIOS 2.5 present.
Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
Manufacturer: LENOVO
Product Name: 2842A23
Version: Not Available
Serial Number: 1ZG6Y9CF5C5
Asset Tag: Not Specified
Features: None
Location In Chassis: Not Specified
Chassis Handle: 0xFFFF
Type: Unknown
Contained Object Handles: 0
从所有文本中我只需要将1ZG6Y9CF5C5
保存在变量中。我尝试grep
如下:
sudo dmidecode -t 2 | grep 'Serial Number'
但它返回整行,我认为我应该使用一个可以在一行中找到第二个单词的正则表达式。如何在shell脚本中实现这一点?
答案 0 :(得分:1)
我打赌有100种方法可以做到这一点,我使用awk提取序列
$ SERIAL=`sudo dmidecode -t 2 | grep 'Serial Number' | awk '{print $3}'`
$ echo $SERIAL
L1HE3AZ02KA
答案 1 :(得分:1)
var=$(sudo dmidecode -t 2 | sed -n 's/^Serial Number: //p')
答案 2 :(得分:1)
不需要grep,awk也可以过滤输出:
SERIAL_NUMBER=`sudo dmidecode -t 2 | awk '/Serial Number/ {print $3}'`