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
也许我的问题很简单,但我不知道该怎么做。
在 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