sed '
/Mario/{
s//first&/
:1
n
s//second&/
b1
}'
Ou:
sed '
1 {
x;s/^/first/;x
}
/Mario/ {
G
s/\(Mario.*\)\n\(.*\)//
x;s/second/third/;s/first/second/;x
}'
Apesar de permitir mais de um Mario por linha e generalizar para mais substituições, eu usaria perl
:
perl -pe 'BEGIN{@words=qw(first second third)}
s/(?=Mario)/$words[$n++]/ge'