Com um sed que suporta -r
:
sed -r -e 's/#1#/John/g; s/#[^#]+#/Mary/g' <<< 'My name is #1#, not #5#!'
caso contrário:
sed -e 's/#1#/John/g; s/#[^#][^#]*#/Mary/g' <<< 'My name is #1#, not #5#!'
Digamos que eu tenha este texto: My name is #1#!
.
Eu quero substituir o #1#
por algo que depende do conteúdo entre o #
, como:
if [ $thing_between_hash -eq 1 ]; then
subs=John
else
subs=Mary
fi
Em seguida, a saída seria:
My name is John!
Posso fazer isso com uma única substituição sed
? Como?
Com bash:
something='My name is #1#!'
subs="John"
mod="${something/\#1\#/$subs}"
echo "$mod"
Saída:
My name is John!
pode fazê-lo como:
[root@h2g2w ~]# subs=john
[root@h2g2w ~]# echo may name is 1 | sed
> 's/1/'$subs'/'
may name is john
[root@h2g2w ~]#
Tags sed