Это мой сценарий:
#!/bin/bash
SOL_atom_index=116101
number=1
SOL_mol_index=SOL$number
index=1
for index in {1..100}
do
for SOL_index in {116101..136845}
do
sed -i "s/$SOL_atom_index/$SOL_mol_index/g;s/$(($SOL_atom_index+1))/$SOL_mol_index/g;s/$(($SOL_atom_index+2))/$SOL_mol_index/g" eq2_8_new_$index.ndx
SOL_atom_index=$(($SOL_atom_index+3))
number=$(($number+1))
SOL_mol_index=SOL$number
done
done
У меня много текстовых файлов с именами: eq2_8_new_1.ndx, eq2_8_new_2.ndx, ...... eq2_8_new_100.ndx
I попробуйте использовать мой скрипт на всех файлах. Я использую переменную "index" и для l oop, поэтому я ожидаю, что эта часть кода будет работать с каждым файлом
for SOL_index in {116101..136845}
do
sed -i "s/$SOL_atom_index/$SOL_mol_index/g;s/$(($SOL_atom_index+1))/$SOL_mol_index/g;s/$(($SOL_atom_index+2))/$SOL_mol_index/g" eq2_8_new_$index.ndx
SOL_atom_index=$(($SOL_atom_index+3))
number=$(($number+1))
SOL_mol_index=SOL$number
done
Вы видели это? Здесь у меня есть команда sed, которая будет работать с указанным c файлом (в конце строки у меня есть eq2_8_new_ $ index.ndx
sed -i "s/$SOL_atom_index/$SOL_mol_index/g;s/$(($SOL_atom_index+1))/$SOL_mol_index/g;s/$(($SOL_atom_index+2))/$SOL_mol_index/g" eq2_8_new_$index.ndx
Так что, если я использую для l oop (для индекса в {1..100}) Я ожидаю, что это будет работать для каждого текстового файла от eq2_8_new_1.ndx до eq2_8_new_100.ndx, НО мой сценарий изменяет только первый файл (eq2_8_new_1.ndx и в других файлах нет изменений).