
Estoy escribiendo una función en zsh
la que tiene una cadena.
"find . -a -print:10"
la :10
pieza debe recortarse por la derecha. Esto podría cambiar en el futuro para convertirse en :23
o :77
etc., por lo que parece que :[0-9]+
se necesita un patrón.
Además, la cadena podría tener la forma
find . -a -print
En cuyo caso, si no hay ningún :[0-9]+
patrón al final, entonces la cuerda no debe modificarse.
entonces
find . -a -print:10
debería convertirsefind . -a -print
yfind . -a -print
debe permanecer comofind . -a -print
Lo que he probado hasta ahora
% sed -nr 's/(.*)(:[0-9]+)?/\1/p' <<<'find . -a -print:10'
find . -a -print:10 # ':10' not getting trimmed
si lo intento
sed -nr 's/(.*)(:[0-9]+)/\1/p' <<<'find . -a -print:10'
find . -a -print # ':10' getting trimmed GOOD ✔✔
pero la misma sed
expresión
sed -nr 's/(.*)(:[0-9]+)/\1/p' <<<'find . -a -print'
# no output
¿Cómo puedo recortar correctamente esta cuerda?
Respuesta1
¿Por qué lo utiliza -n
si no desea suprimir la salida predeterminada?
Solo usa:
sed -E -e 's/:[0-9]+$//'