Я пытаюсь использовать SED для создания серии каталогов, содержащих файл с одинаковым именем, но каждый файл в каждом каталоге отличается на одну строку.
for i in $( cat ~/SCRIPTS/AALIST.txt); do
mkdir ~/jan10/25
sed -e "s/HAT/${i}/" <~/SCRIPTS/HAT25.inp > ~/jan10/25/25$i/mat.inp
AALIST.txt — это просто файл, фактически содержащий...
A
B
C
D
E
В то время как HAT25.inp имеет много строк текста, а затем слово «HAT» в 25-й строке, этот HAT следует заменить на A, B, C и т. д. В каталоге 25 SED должен создавать каталоги с именами 25A, 25B, 25C и т. д. Внутри этих каталогов должен быть исходный файл HAT25.inp с заменой HAT на букву родительского каталога. Под этим я подразумеваю, что каталог 25A должен содержать HAT.inp, переименованный в mat.inp и содержащий A в 25-й строке, а не HAT. К сожалению, когда я пытаюсь выполнить свой код выше, я получаю сообщение об ошибке:
cannot create directory `/home/user/jan10/25': File exists
./loop.sh: line 23: /home/user/jan10/25/25$i/mat.inp: No such file or directory
Есть ли какое-то представление о том, что я сделал неправильно, у меня возникли проблемы с определением того, какую именно ошибку я сделал.
РЕДАКТИРОВАТЬ:
Закомментировав строку mkdir, я получаю следующую ошибку. Каталог "25" создается, а каталоги 25А, 25В и т.д. не создаются. Полученная ошибка приведена ниже.
./loop.sh: line 23: /home/user/jan10/25/25A/mat.inp: No such file or directory
mkdir
находится внутри вашего цикла и выполняется во время каждого цикла, следовательно,cannot create dir ...
. ? Может быть, вы действительно хотитеmkdir ~/jan10/25/$i
? Ошибка25/25$i
немного загадочна. Учитывая ваш код, я бы этого не ожидал. Является ли реальный код, который выполняется? Удачи. - person shellter   schedule 06.11.2014mkdir ~/jan10/25/$i
, верно? Использование этого, вероятно, исправит другие ошибки. - person shellter   schedule 06.11.2014