sed script:
sed '/BLAH/{s/ \w+$/ newfoo/;h};${x;/BLAH/ba;x;s/$/\nsetenv BLAH newfoo/;x;:a;x}'
sed -e '
/^\(\|.*\W\)BLAH\(\W.*\|\)$/{
s/ \w\+$/ newfoo/;
h;
};
${
x;
/BLAH/ba;
x;
s/$/\nsetenv BLAH newfoo/;
x;
:a;
x
}'
:
sed -e'/BLAH/{h};${x;/BLAH/ba;x;s/$/\nsetenv BLAH newfoo/;x;:a;x}' -i text.txt
, BLAH:
sed -e '
/^\(.*\W\|\)BLAH\(\W.*\|\)$/{h};
${
x;
/./ba;
x;
s/$/\nsetenv BLAH newfoo/;
x;
:a;
x
}' <(echo BLAH=foo;seq 1 4)
BLAH=foo
1
2
3
4
sed -e '
/^\(.*\W\|\)BLAH\(\W.*\|\)$/{h};
${
x;
/./ba;
x;
s/$/\nsetenv BLAH newfoo/;
x;
:a;
x
}' <(echo BLAHBLAH=foo;seq 1 4)
BLAHBLAH=foo
1
2
3
4
setenv BLAH newfoo
, BLAH .. , 1- , . , char, , .
script
:
sedcmd='/^\(.*\W\|\)%s\(\W.*\|\)$/{s/ \w\+$/ %s/;h};'
sedcmd+='${x;/./ba;x;s/$/\\nsetenv %s %s/;x;:a;x}'
varnam=BLAH
varcnt=foo
filnam=/tmp/file.txt
printf -v sedcmd "$sedcmd" ${varnam} ${varcnt} ${varnam} ${varcnt}
sed -e "$sedcmd" -i "$filnam"
-i ...
, :
sed -e "$sedcmd" <(echo setenv BLAH oldfoo;seq 1 4)
setenv BLAH foo
1
2
3
4
sed -e "$sedcmd" <(echo setenv BLAHBLAH oldfoo;seq 1 4)
setenv BLAHBLAH oldfoo
1
2
3
4
setenv BLAH foo