Не уверен, что регулярное выражение поможет вам в этом. Регулярное выражение наиболее полезно, если вы ищете строки с повторяющимися шаблонами и, при необходимости, заменяете шаблон фиксированным текстом или значением, совпадающим с другим шаблоном в строке.
В моем понимании того, что вы описываете, вы ищете фиксированный текст, различный в каждой строке, и хотите заменить часть строки на число, относящееся один к одному, с поисковым текстом. Это совершенно другой вариант использования, вам нужно выполнить итерацию для каждого текста поиска и иметь другую таблицу, которая связывает текст поиска и новый номер.
На мой взгляд, вам нужно создать регулярное выражение для каждого из ваших текстов поиска и шаблон подстановки для старого на новое число, что-то вроде (в команде vi-вида):
s!\d+,(.*2x4x 92 5/8 STUD GRADE FIR)!1234,\2!
Это соответствует 4-значному числу и запятой, за которыми следуют материал и текст поиска. Подстановка заменяет все это на «новое» число, запятую и соответствующую группу захвата.
Но создание этих регулярных выражений - это, по сути, больше работы, чем замена вручную в файле ...