shell正则如何匹配字母与数字,但不全是数字的情况

1.文本如下

cat 1

Z1W4KSXC-58--2-0-16-953404-654340-512-0-0xe50704030a1f0700-0-0-0-0-0-86-0x0000000000000000-0-1-0
WD-WMC160286061-57--2-0-16-953404-654847-512-0-0xe50704030a1f0700-0-0-0-0-0-85-0x0000000000000000-0-1-0
Z1W4KAKE-56--2-0-16-953404-599737-3584-0-0xe50704030a220500-0-0-0-0-0-84-0x0000000000000000-0-1-0
0QV71MAA-64--0-0-16-381368-379897-0-0-0xe507031014183900-0-0-0-0-0-4-0x0000000000000000-0-17-2

2.我想匹配出第一列的磁盘序列号,因为磁盘序列号本身也包含-字符,所以不方便使用awk,就打算用grep -o  匹配,但是不知道如何将纯数字的过滤掉,我希望只用一次grep命令加正则来过滤,而不是用两次grep做过滤,谢谢

cat 1 | grep -o "[A-Z0-9]\{8,\}"
Z1W4KSXC
50704030
0000000000000000
WMC160286061
50704030
0000000000000000
Z1W4KAKE
50704030
0000000000000000
0QV71MAA
507031014183900
0000000000000000
 

"(?=[0-9]*[A-Z])[A-Z0-9]\{8,\}"

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632