@enabl3

Как заменить разные строки на разные данные в файле?

Всем привет, есть условный док "file", в нем текст примерно следующего формата:
16.
sometext16
19.
sometext19
С помощью данного скрипта:
num="16,19"
text="test1,test2"
for i in `echo $num | tr ',' '\n'`
    do
        textold=$(cat file | grep $i | tail -n 1)
        echo "Number #$i"
        echo "TEXT: oldtext$i"
printf "\n"
    done

Вывожу его в следующем виде:
Number #16
TEXT: oldtext16

Number #19
TEXT: oldtext19
Как в "file" изменить данные для каждого "#" на нужные нам "$text"? Не могу с этим разобраться, при замене через "sed" меняет в двух строках значение на "test1,test2"
Желаемый вывод следующего содержания:
Number #16
TEXT: test1

Number #19
TEXT: test2
  • Вопрос задан
  • 56 просмотров
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
Ну можно так.
Но задача у вас странная.. Ее бы в корне переделать.
num=( 16 19 )
text=( test1 test2 )
declare -i index=0

while [ -n "${num[$index]}" ]
do
  echo "DEBUG: $index, ${num[$index]}, ${text[$index]}"
  sed -i -r "s/^${num[$index]}\./#${num[$index]}/" file
  sed -i -r "s/^[^\d#].*${num[$index]}/TEXT:${text[$index]}/" file
  index+=1
done
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы