从变量中检测最后一次出现的两个字母(第一个字母是 C,第二个字母可以是 A 或 B)并应用一些删除和 if 条件

从变量中检测最后一次出现的两个字母(第一个字母是 C,第二个字母可以是 A 或 B)并应用一些删除和 if 条件

考虑下面的变量字母=“1234,MR45,MB46,1234”需要一个命令来检测M[B或R]的最后一次出现,其中M是固定的,第二个字母可以是B或R,并删除它之前的所有内容预期输出输出= MB46, 1234" 如果字母变量没有 MB 或 MR 字,还需要命令打印错误

答案1

Bash解决方案(正则表达式匹配):

letters="1234, MR45, MB46, 1234"

if [[ "$letters" =~ .*(M[BR].*) ]]; then 
    echo "${BASH_REMATCH[1]}"   # MB46, 1234
else 
    echo "MB or MR word not found!"
fi

作为简化的缩短替代方案,以下 GNUgrep可以使用的方法:

grep -Po '.*\KM[BR].*' <<<"$letters" || echo "MB or MR word not found"

相关内容