Joh*_*ica 24
=~当你使用双方括号时,有一个漂亮的正则表达式运算符.捕获的组在$BASH_REMATCH阵列中可用.
if [[ $STRING =~ (X[0-9]{2})$ ]]; then
echo "matched part is ${BASH_REMATCH[1]}"
fi
Run Code Online (Sandbox Code Playgroud)
让我们把你的输入作为
INPUT.TXT
ASD123
GHG11D3456
FFSD11dfGH
FF87SD54HJ
Run Code Online (Sandbox Code Playgroud)
我想找到的模式是"SD [数字] [数字]"
码
grep -o'SD [0-9] [0-9]'Input.txt
产量
SD12
SD11
SD54
Run Code Online (Sandbox Code Playgroud)
如果你想在脚本中使用它...那么你可以根据你的需要在变量/数组中分配上面的代码.
$ foo="abcX23"
$ echo "$(echo "$foo" | sed 's/.*\(X[0-9][0-9]\)$/\1/')"
X23
Run Code Online (Sandbox Code Playgroud)
要么
if [[ "$foo" =~ X[0-9][0-9]$ ]]; then
echo "${foo:$((${#foo}-3))}"
fi
Run Code Online (Sandbox Code Playgroud)