我试图从终端解析Mac序列号的最后4个字符。我可以用这个命令抓取序列:
serial=$(ioreg -l |grep "IOPlatformSerialNumber"|cut -d ""="" -f 2|sed -e s/[^[:alnum:]]//g)
但我只需要输出最后4个字符。
发布于 2015-04-07 03:18:11
在实际工作之后,使用a shell parameter expansion提取最后4个字符,但您可以在一步内完成所有操作:
ioreg -k IOPlatformSerialNumber | sed -En 's/^.*"IOPlatformSerialNumber".*(.{4})"$/\1/p'ioreg -k IOPlatformSerialNumber返回的行比ioreg -l少得多,因此它大大加快了操作速度(在我的机器上大约快了80% )。sed命令匹配整个感兴趣的行,并将其替换为行结束的"之前的最后4个字符;也就是说,它返回最后4个字符。它的价值。注意:ioreg输出项目如下所示:
| "IOPlatformSerialNumber" = "A02UV13KDNMJ"至于您的原始命令:cut -d ""=""与cut -d =相同--在cut看到值之前,shell只需删除=周围的空字符串即可。注意,cut只接受一个分隔符char。
发布于 2015-04-06 20:50:37
在linux论坛echo ${serial:(-4)}中找到的
发布于 2015-04-06 21:21:36
您也可以这样做:grep -Eo '.{4}$' <<< "$serial"
https://stackoverflow.com/questions/29479377
复制相似问题