Se você realmente precisar usar sed
, um possível algoritmo seria continuar adicionando espaços na frente da string math
, desde que haja 18 caracteres ou menos:
$ sed -e :a -e 's/\(^.\{,18\}\)math/ math/; ta' file
how are you math123
good math234
try this math500
Se você quiser mover apenas a última ocorrência da string, poderá ancorar no final da linha. Por exemplo, dado algo como
$ cat file
how are you math123
good math234
try this math500
math101 is enough math
então desde que não haja espaço em branco
$ sed -e :a -e 's/^\(.\{,18\}\)\(math[^[:space:]]*\)$/ /; ta' file
how are you math123
good math234
try this math500
math101 is enough math
Se o seu sed
tiver um modo de expressão regular estendida, você poderá simplificar para
sed -E -e :a -e 's/^(.{,18})(math[^[:space:]]*)$/ /; ta'