考虑下面的变量字母=“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"