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

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

Я использовал несколько примеров для начала работы и могу заставить код работать для изменения и создания 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.

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


person Cae.rich    schedule 17.10.2018    source источник
comment
comment
Пожалуйста, проверьте: расширить переменную unix внутри команды sed   -  person User123    schedule 17.10.2018


Ответы (2)


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

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

Прежде всего, вы не использовали обратные кавычки или, лучше, вы должны использовать $(..) для $(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
person User123    schedule 17.10.2018
comment
Спасибо @ user123 Я попробовал, но код не работает с моей стороны, чтобы создать новый файл, который включает только изменение ref.txt на соответствующий ref$i.txt, есть мысли, что еще я мог бы попробовать? Открыт для предложений по другим командам! - person Cae.rich; 17.10.2018