Я не уверен, как вы читаете в своих строках, но этот пример должен помочь вам туда добраться.Я перебираю 4 примера строки, WR1234 RN456 7890 PQ2342
.Вы не сказали, что делать, если строка не соответствует ожидаемому формату (PQ2342
в моем примере), поэтому мой код просто игнорирует ее.
#!/bin/bash
for string in "WR1234 - Work Request Name.doc" "RN5678 - Release Note.doc"; do
[[ $string =~ ^([^0-9]*)([0-9]*).*$ ]]
case ${BASH_REMATCH[1]} in
"WR")
var="${BASH_REMATCH[1]}${BASH_REMATCH[2]}"
type="work request"
echo -e "$var\t-- $type"
;;
"RN")
var="${BASH_REMATCH[1]}${BASH_REMATCH[2]}"
type="release note"
echo -e "$var\t-- $type"
;;
"")
var="WR${BASH_REMATCH[2]}"
type="work request"
echo -e "$var\t-- $type"
;;
esac
done
Вывод
$ ./rematch.sh
WR1234 -- work request
RN5678 -- release note