从shell脚本中的应用程序输出中重写单词

时间:2015-10-20 10:23:26

标签: linux bash shell

我需要在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脚本中实现这一点?

3 个答案:

答案 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}'`