У меня есть код, который вырезает и разделяет содержимое текстового файла в разных массивах.Первое поле содержит имя файла, номер второй строки, третью строку для добавления.
Пример текста:
create_tetro.c:132:// printf("\t\t\tSol %d found !\n", sol);
float_to_int.c:23:// printf("%f -> %d\n", i, ((int)i / 1) + 0.9999);
free_all.c:19: printf("update_pieces\n");
Код для назначения содержимого массивам:
i=0
while read line; do
{
file[$i]="$(cut -d ':' -f1 <<< $line)"
line_nb[$i]="$(cut -d ':' -f2 <<< $line)"
string[$i]="$(cut -d ':' -f3 <<< $line)"
((i++))
}
done < .gres.txt
TheВышеуказанная часть является правильной и функциональной.Теперь я хотел бы использовать массивы в цикле, чтобы добавить $string[i]
в $line_nb[i]
в $file[i]
, используя sed -i
или что-то еще.Другими словами, я хочу добавить строки, содержащиеся в массиве, в некоторые файлы .c в определенные строки.Это будет вызвано правилом Makefile с именем «print debug» и автоматически заменит все отладочные printfs в соответствующих файлах в правой строке.Это не работает, но близко:
for i in {1..150}; do sed -i '' "${line_nb[$i]}i${string[$i]}" ${file[i]};done
Я проверил много ресурсов, документации, видео, вопросов, но пока ничего не помогло.