Вот грубая попытка удалить все, кроме нужных кодов, используя sed.(Обратите внимание, что я интерпретирую «число» как строку из одной или нескольких цифр, без десятичной точки или начального знака минуса.)
sed -e 's/\([A-Z]\)[0-9]*/\1/g' -e 's/[0-9]*[^0-9A-Z]*//g' -e 's/[0-9]*$//' -e '/^$/d' < filename
Первая команда удаляет все, что после заглавной буквы не являетсячисло (и, следовательно, возможно, начало другого кода), второе удаляет любое число, за которым следует что-то кроме заглавной буквы, третье удаляет завершающие числа, а четвертое удаляет пустые строки.
Я провел несколько тестови это, кажется, работает очень хорошо.Я с радостью исправлю это, если кто-нибудь сможет найти случай, когда он потерпит неудачу.