我在使用regex命令时遇到问题,该命令会在以下字符串Y
中获取X_X_X_Y
。 BTW:Y是一个整数,但可以在之后验证。
答案 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