如何捕获包含最高数字的字符串?

时间:2017-10-08 12:13:56

标签: bash

我有一个看起来像这样的变量:

asgname='Company-DEV-API-65-ServerAutoScalingGroup-122MJNZLAAKW4 Company-DEV-API-68-ServerAutoScalingGroup-1SFNH4CSKKWA4'

我想更新最新的AutoScaling组,在本例中为68。

asg名称用空格分隔。

如何捕获包含较大数字的完整asg名称?

2 个答案:

答案 0 :(得分:1)

使用bash和GNU排序:

Company-DEV-API-

输出:

Company-DEV-API-68-ServerAutoScalingGroup-1SFNH4CSKKWA4

我假设所有字符串都以pytesseract开头。

答案 1 :(得分:0)

在这里帮忙。

echo "$asgname" | awk -F"-" '{len=$4>len?$4:(len?len:$4)} END{print len}'

输出为68

说明: 打印名为asgname的变量,其上带有"(双引号)。现在使用|(管道)将其标准输出作为标准输入发送到awk命令。在awk命令中,我将字段分隔符设为-(短划线)。在awk的主体结构里面我正在创建一个变量len,其值为4美元(你有数字)现在每次将它的值与它自己的值进行比较时它会替换它自己的值,如果它的值小于目前的4美元价值。所以最后我们终于得到了它的最高价值。所以在awk的END部分打印变量len的值。

编辑: 刚看到编辑问题。如果您的变量中有空格,那么您可以对上面的代码进行微小的更改,并且可以获得如下所需的结果。

echo "$asgname" | awk -v RS=" " -F"-" '{len=$4>len?$4:(len?len:$4)} END{print len}'