正则表达式在最后一个下划线后得到数字

时间:2014-02-25 20:05:03

标签: regex bash shell sed

我在使用regex命令时遇到问题,该命令会在以下字符串Y中获取X_X_X_Y。 BTW:Y是一个整数,但可以在之后验证。

6 个答案:

答案 0 :(得分:5)

您可以使用shell参数扩展:

$ s="X_X_X_Y"
$ echo "${s##*_}"
Y

使用sed

$ sed 's/.*_//' <<< "$s"
Y

使用grep

$ grep -oP '.*_\K.*' <<< "$s"
Y

答案 1 :(得分:2)

作为替代方案,如果你总是在_ char上进行标记,你可以跳过正则表达式并使用awk

echo 'X_X_X_Y' | awk -F_ '{print $NF}'

答案 2 :(得分:2)

使用BASH正则表达式:

s='s="X_X_X_10'
[[ "$s" =~ [^_]+$ ]] && echo "${BASH_REMATCH[0]}"
10

答案 3 :(得分:2)

这个正则表达式将在您匹配的东西中使用,这是一个整数

[^_]+_[^_]+_[^_]+_(\d+)

答案 4 :(得分:0)

这将在下划线后面的字符串末尾打印一个整数。

 perl -e '"0_0_0_1" =~ /_([0-9]+)$/; print $1,"\n" if defined $1'
1

答案 5 :(得分:0)

这可能对您有用:

sed 's/.*_\([0-9][0-9]*\)/\1/' file