Создать цикл для поиска и замены в файле, затем создать несколько выходных файлов

Я новичок в кодировании, и я искал способ написать цикл, который генерирует несколько файлов после изменения одного аспекта мастер-файла.

Я использовал несколько примеров для начала и могу заставить работать код для изменения и создания 1 файла, но не цикла. Вот код:

for i in 'seq 1 6'; do sed 's/ref.txt/ref${i}.txt/g' CPMIR.as > CPMIR${i}.as

В конце я хотел бы изменить ref.txt в файле CPMIR.as на ref1.txt и вывести новый файл CPMIR1.as, ref2.txt, вывести CPMIR2.as, ref3.txt и вывести CPMIR3.as..... весь путь до 6.

Спасибо за вашу помощь!

2 ответа

Решение

Это может сработать для вас (GNU sed & parallel):

seq 6 | parallel "sed 's/ref\.txt/ref'{}'.txt/g' CPMIR.as >CPMIR{}.as"

Прежде всего, вы не использовали backticks или лучше вы должны использовать $(..) за $(seq 1 6) Кроме того, вам нужно использовать double-quotes при использовании переменных внутри sed,

Это должно работать:

#!/bin/bash

for i in $(seq 1 6)
do
sed "s/ref.txt/ref${i}.txt/" CPMIR.as > CPMIR${i}.as
done
Другие вопросы по тегам