Используя gnu-awk
, вы можете сделать это, передав значение переменной в командной строке:
var=$'This is \n what i want'
awk -v var="$var" -v w='zxcv' 'n=index($0, w){
$0 = substr($0, 1, n-1) var substr($0, n + length(w))} 1' file
asdf
This is
what i want
qwer
Если поисковое слово появляется в отдельной строке (как показано навопрос) тогда эту команду можно упростить до этого:
awk -v var="$var" -v w='zxcv' 'index($0, w)==1{$0 = var} 1' file