提取特定字符后的最短后缀
Extract shortest suffix following a certain character
我有一个如下所示的字符串,它是从右侧添加的,每次我在我的脚本中 运行 时都需要自动获取最后的单词。
string='apple:v1 banana:v3 pineapple:v3'
现在我希望在这种情况下输出为 v3
但我的字符串不是静态的,它总是从右侧添加,如:
string='apple:v1 banana:v3 pineapple:v3 mango:v4 strawberry:v5'
这里的输出应该是v5
.
现在我们在 shell 中有 cut 命令,我们可以在其中获取
myoutput="(echo "$string" | cut -d ':' -f5)
到 v5
我们是否有更多的命令或参数,每当我的字符串添加新输出时,我可以使用它来获取最新添加的 vx 详细信息。
您不需要外部实用程序。
$ string='apple:v1 banana:v3 pineapple:v3'
$ echo "${string##*:}"
v3
$
$ string='apple:v1 banana:v3 pineapple:v3 mango:v4 strawberry:v5'
$ echo "${string##*:}"
v5
要得到最后一个字段,我们可以将字符串反转,把第一个字段取出来;就我而言
myoutput="$(echo "$string" | rev | cut -d ':' -f1 | rev)"
echo "$myoutput"
将打印提取的字段。
Awk 是替代选项:
awk -F: '{ print $NF }' <<< "$string"
将分隔符设置为 : 然后打印最后一个字段 ($NF)
你可以试试 Perl
$ echo "apple:v1 banana:v3 pineapple:v3" | perl -ne ' /.*:(.+)/omg and print '
v3
$ echo 'apple:v1 banana:v3 pineapple:v3 mango:v4 strawberry:v5' | perl -ne ' /.*:(.+)/omg and print '
v5
$
我有一个如下所示的字符串,它是从右侧添加的,每次我在我的脚本中 运行 时都需要自动获取最后的单词。
string='apple:v1 banana:v3 pineapple:v3'
现在我希望在这种情况下输出为 v3
但我的字符串不是静态的,它总是从右侧添加,如:
string='apple:v1 banana:v3 pineapple:v3 mango:v4 strawberry:v5'
这里的输出应该是v5
.
现在我们在 shell 中有 cut 命令,我们可以在其中获取
myoutput="(echo "$string" | cut -d ':' -f5)
到 v5
我们是否有更多的命令或参数,每当我的字符串添加新输出时,我可以使用它来获取最新添加的 vx 详细信息。
您不需要外部实用程序。
$ string='apple:v1 banana:v3 pineapple:v3'
$ echo "${string##*:}"
v3
$
$ string='apple:v1 banana:v3 pineapple:v3 mango:v4 strawberry:v5'
$ echo "${string##*:}"
v5
要得到最后一个字段,我们可以将字符串反转,把第一个字段取出来;就我而言
myoutput="$(echo "$string" | rev | cut -d ':' -f1 | rev)"
echo "$myoutput"
将打印提取的字段。
Awk 是替代选项:
awk -F: '{ print $NF }' <<< "$string"
将分隔符设置为 : 然后打印最后一个字段 ($NF)
你可以试试 Perl
$ echo "apple:v1 banana:v3 pineapple:v3" | perl -ne ' /.*:(.+)/omg and print '
v3
$ echo 'apple:v1 banana:v3 pineapple:v3 mango:v4 strawberry:v5' | perl -ne ' /.*:(.+)/omg and print '
v5
$