Заменить строку на месте другой строкой, когда строка соответствует точно другой строке с помощью sed - PullRequest
0 голосов
/ 09 сентября 2018

В следующем примере (example.txt)

name1   stringA1    stringB1    stringC1
name2   stringA2    stringB2    stringC2

Я бы хотел заменить в файле 'stringB1' строки 'new_string', которые соответствуют 'name1', используя переменную.

Мне удалось напечатать интересующие строки, используя:

NAME="name1"
sed -n "/^\<${NAME}\>/p" example.txt

Но у меня проблема с печатью строк, когда я пытаюсь выполнить подстановку, используя переменные bash:

NAME="name1"
STRING_TO_REPLACE="stringB1"
NEW_STRING="new_string"
sed -n "/^\<${NAME}\>/s/\<${STRING_TO_REPLACE}>/\<${NEW_STRING}\>/" example.txt

Последняя идея - заменить строку в файле напрямую, используя опцию sed -i

sed -i "/^\<${NAME}\>/s/\<${STRING_TO_REPLACE}>/\<${NEW_STRING}\>/" example.txt
...