Я пытаюсь написать bash-скрипт, который будет читать весь файл построчно, искать конкретную строку, если такая строка существует, - извлечь строку из нее в переменную, найти другую конкретную строку и заменить ее этой переменной. Он должен быть в цикле while, поскольку в этой паре строк может быть несколько вхождений, поэтому я не хочу заменять все строки на 1 переменную, так как каждый случай будет отличаться, вот пример:
line1
mynumber: 666
line3
line4
show (value)
line5
line6
mynumber: 111
line7
line8
line9
line10
show (value)
поэтому я хочу, чтобы после замены это выглядело так:
line1
mynumber: 666
line3
line4
show (666,value)
line5
line6
mynumber: 111
line7
line8
line9
line10
show (111,value)
вот мой сломанный код, который не работает, потому что переменные выбираются, но добавляются 1 за другим (массив), и я думаю, что это нарушает sed,
for i in $(seq $count);
do while IFS= read -r line;
do var1="$(grep -o -E '.{0,0}mynumber: .{0,3}' File.cs | egrep -o ".{3}$")" ; done < "$input";
sed -i "s/(value)/(${var1},value)/g
" File.cs; ; done
Проблемы, которые я получаю: Var = 666 111, и я хотел бы быть только 1 значением за замену, и я получаю ошибку от sed: sed -e выражение # 1: команда s не определена