Bash用动态长度剪切字符串的末尾

时间:2016-12-13 12:58:22

标签: bash cut

也许我的问题很简单,但我无法弄清楚如何做到这一点。

在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

我尝试过使用剪切,但它只返回1.3.6.1.4.1之后的数字

请帮我解释如何重写命令以返回正确的值:

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

1 个答案:

答案 0 :(得分:3)

你很近:

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

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

来自cut手册页:

  

N-M从第N个到第M个(包括)字节,字符或字段

     

-M从第一个到第M个(包括)字节,字符或字段