命令“sudo dmicode -t 17 | grep "Size.*MB" 中的字符“.*”有什么用途?

命令“sudo dmicode -t 17 | grep "Size.*MB" 中的字符“.*”有什么用途?

物理 RAM 问题的答案是:

sudo dmidecode -t 17 | grep "Size.*MB" | awk '{s+=$2} END {print s / 1024 "GB"}'

上述代码给出了正确答案:这台装有 Unbutu 20.04.3 的电脑上有 8GB

请解释一下原因?

dmidecode命令使用“MB:

sudo dmidecode -t 17 | grep "Size.*MB"

Size: 2048 MB
Size: 2048 MB
Size: 2048 MB
Size: 2048 MB

dmidecode该命令使用“Size”搜索,一共有 5 条记录(5 行) :

sudo dmidecode -t 17 | grep "Size" 
Size: 2048 MB
Size: 2048 MB
Size: 2048 MB
Size: 2048 MB
Size: 4096 kB

共有 0 条记录 (零),其中:

sudo dmidecode -t 17 | grep "Size**MB"
sudo dmidecode -t 17 | grep "Size*MB" 
sudo dmidecode -t 17 | grep "Size.?MB" 
sudo dmidecode -t 17 | grep "Size. MB" 
sudo dmidecode -t 17 | grep "Size??MB" 
sudo dmidecode -t 17 | grep "Size???MB" 
sudo dmidecode -t 17 | grep "Size????MB"

有人可以解释一下我们如何获得 4 条记录吗:

sudo dmidecode -t 17 | grep "Size.*MB"

这 4 条记录正确显示了 4 条内存条,每条内存条 2048 MB。

然后 awk 加法正确给出:

8192MB = 2048+2048+2048+2048

然后 awk 除以 1024 我们得到 8GB。

.*有人能解释一下上面的人物在做什么吗?

答案1

答案是man grep正则表达式

根据 grep手册页

The period . matches any single character.
*  The preceding item will be matched zero or more times.

命令 grep "Size.*MB"翻译为:

打印所有包含精确模式“Size”和精确模式“MB”的行,无论模式之间有多少个字符。

该命令还会显示以下行:

SizeMB
Size do-be do-be doo MB
easd EdsSizei up@#$Ahfu e8MBGj;eh di uh7987 p*&(8

相关内容