Это может сработать для вас (GNU sed & parallel):
parallel --dry sed -E 's/[0-9]+/{1}/' {2} \> {2.}{1}.txt ::: {1000..1005} ::: file.txt
Это создает набор команд для замены первой группы чисел в file.txt
на 1000
на 1005
и записи результаты до file1000.txt
до file1005.txt
.
После проверки набора команд удалите опцию --dry
short для --dry-run
и перезапустите.
NB Исходный файл не изменено.
Подстановка может быть более точной c, то есть:
parallel sed -E \''s#(/home/inputfiles/water_gen/)5202(_water.gen)#\1{1}\2#'\' {2} \> {2.}{1}.txt ::: {1000..1005} ::: file.txt
NB. Кавычки команды sed заключены в кавычки \'
, так что обратные ссылки не будут приняты за вещи в оболочке.
Или, чуть меньше, укажите c:
parallel sed -E \''s#(/home/inputfiles/water_gen/)[0-9]+(_water.gen)#\1{1}\2#'\' {2} \> {2.}{1}.txt ::: {1000..1005} ::: file.txt
Номера замены могут быть в файле:
cat <<\! > replacementsFile
1000
1001
1002
1003
1004
1005
!
parallel sed -E \''s#(/home/inputfiles/water_gen/)5202(_water.gen)#\1{1}\2#'\' {2} \> {2.}{1}.txt :::: replacementsFile ::: file.txt