Bash 以动态长度剪切字符串的结尾

Bash cut end of string with dynamic length

也许我的问题很简单,但我不知道该怎么做。

在 bash 脚本中,我有一个变量,其中存储了 snmp SysObjectID ($device_manufacturer)。 这个变量的值可以是这样的:

1.3.6.1.4.1.9.1.2066
1.3.6.1.4.1.2272.9
1.3.6.1.4.1.2272.7
1.3.6.1.4.1.45.3.30.1
1.3.6.1.4.1.930.1.1
1.3.6.1.4.1.930.1.4
1.3.6.1.4.1.930.1.5

我需要从这个值中删除并放入另一个变量值以 1.3.6.1.4.1 和点之后的数字开始并受点限制。例如:

1.3.6.1.4.1.9
1.3.6.1.4.1.2272
1.3.6.1.4.1.45

我试过使用 cut,但它 return 只有 1.3.6.1.4.1

之后的数字

请帮助我如何将命令重写为 return 正确的值:

unknown_device_manufacturer=$( echo $device_manufacturer0 | cut -d'.' -f7 )

你很接近:

unknown_device_manufacturer=$( echo $device_manufacturer0 | cut -d'.' -f1-7 )

unknown_device_manufacturer=$( echo $device_manufacturer0 | cut -d'.' -f-7 )

来自 cut 手册页:

N-M from N'th to M'th (included) byte, character or field

-M from first to M'th (included) byte, character or field