Извините за предыдущую ошибку, пожалуйста, попробуйте снова ниже.
С GNU awk v4.1.0 + (пожалуйста, сначала сделайте резервную копию ваших файлов):
awk -i inplace 'NR==FNR{re[FNR]=$0;print;next}match(FILENAME,/test([0-9]+)/, fi){gsub("mock",re[fi[1]])}1' mock.txt test{1..500}.txt
Обратите внимание, что файлы не могут иметь возврат каретки \r\n
окончания, если они есть, пожалуйста, прокомментируйте.
Если файлы содержат много строк, то для эффективности и поместить его в несколько строк для удобства чтения:
awk -i inplace '
NR==FNR{re[FNR]=$0;print;next}
FNR==1{match(FILENAME,/test([0-9]+)/, fi)}
/mock/{gsub(/mock/,re[fi[1]])}
1' mock.txt test{1..500}.txt