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?