
Estou escrevendo uma função na zsh
qual possui uma string
"find . -a -print:10"
a :10
parte precisa ser aparada à direita. Isso pode mudar no futuro para se tornar :23
ou :77
etc, então parece que um padrão como esse :[0-9]+
é necessário.
além disso, a string pode ter o formato
find . -a -print
Nesse caso, se não houver nenhum :[0-9]+
padrão no final, a string deverá permanecer inalterada.
então
find . -a -print:10
deveria se tornarfind . -a -print
efind . -a -print
deveria ficar comofind . -a -print
O que eu tentei até agora
% sed -nr 's/(.*)(:[0-9]+)?/\1/p' <<<'find . -a -print:10'
find . -a -print:10 # ':10' not getting trimmed
Se eu tentar
sed -nr 's/(.*)(:[0-9]+)/\1/p' <<<'find . -a -print:10'
find . -a -print # ':10' getting trimmed GOOD ✔✔
mas a mesma sed
expressão
sed -nr 's/(.*)(:[0-9]+)/\1/p' <<<'find . -a -print'
# no output
Como posso cortar essa string corretamente?
Responder1
Por que você está usando -n
se não deseja suprimir a saída padrão?
Apenas use:
sed -E -e 's/:[0-9]+$//'