Por que você está usando -n se não quiser suprimir a saída padrão?
Use apenas:
sed -E -e 's/:[0-9]+$//'
Estou escrevendo uma função em zsh que tem uma string
"find . -a -print:10"
a parte :10 precisa ser aparada à direita. Isso pode mudar no futuro para se tornar :23 ou :77 etc, então parece que um padrão como :[0-9]+ é necessário.
também, a string pode ter o formato
find . -a -print
Nesse caso, se não houver nenhum padrão :[0-9]+ no final, a sequência deverá ser mantida inalterada.
então
find . -a -print:10 deve se tornar find . -a -print find . -a -print deve permanecer como find . -a -print % sed -nr 's/(.*)(:[0-9]+)?//p' <<<'find . -a -print:10'
find . -a -print:10 # ':10' not getting trimmed
Se eu tentar
sed -nr 's/(.*)(:[0-9]+)//p' <<<'find . -a -print:10'
find . -a -print # ':10' getting trimmed GOOD ✔✔
mas a mesma expressão sed
sed -nr 's/(.*)(:[0-9]+)//p' <<<'find . -a -print'
# no output
Como posso aparar corretamente essa string?