
Ich schreibe eine Funktion, zsh
die eine Zeichenfolge hat
"find . -a -print:10"
der :10
Teil muss rechts abgeschnitten werden. Dies kann sich in Zukunft ändern und wird zu :23
oder :77
usw., daher scheint ein Muster wie :[0-9]+
dieses erforderlich zu sein.
außerdem könnte die Zeichenfolge die Form haben
find . -a -print
Wenn :[0-9]+
am Ende kein Muster vorhanden ist, sollte die Zeichenfolge unverändert bleiben.
Also
find . -a -print:10
sollte werdenfind . -a -print
undfind . -a -print
sollte bleiben alsfind . -a -print
Was ich bisher versucht habe
% sed -nr 's/(.*)(:[0-9]+)?/\1/p' <<<'find . -a -print:10'
find . -a -print:10 # ':10' not getting trimmed
Wenn ich es versuche
sed -nr 's/(.*)(:[0-9]+)/\1/p' <<<'find . -a -print:10'
find . -a -print # ':10' getting trimmed GOOD ✔✔
aber der gleiche sed
Ausdruck
sed -nr 's/(.*)(:[0-9]+)/\1/p' <<<'find . -a -print'
# no output
Wie kann ich diese Zeichenfolge richtig kürzen?
Antwort1
Warum verwenden Sie -n
, wenn Sie die Standardausgabe nicht unterdrücken möchten?
Benutz einfach:
sed -E -e 's/:[0-9]+$//'