
Я пишу функцию, в zsh
которой есть строка
"find . -a -print:10"
часть :10
нужно обрезать справа. Это может измениться в будущем, чтобы стать :23
или т. д., так что, похоже , нужен :77
шаблон типа .:[0-9]+
также строка может иметь вид
find . -a -print
В этом случае, если на конце нет :[0-9]+
рисунка, то строку следует оставить без изменений.
так
find . -a -print:10
должен статьfind . -a -print
иfind . -a -print
должен оставаться таким, как естьfind . -a -print
Что я уже пробовал
% sed -nr 's/(.*)(:[0-9]+)?/\1/p' <<<'find . -a -print:10'
find . -a -print:10 # ':10' not getting trimmed
Если я попробую
sed -nr 's/(.*)(:[0-9]+)/\1/p' <<<'find . -a -print:10'
find . -a -print # ':10' getting trimmed GOOD ✔✔
но то же самое sed
выражение
sed -nr 's/(.*)(:[0-9]+)/\1/p' <<<'find . -a -print'
# no output
Как мне правильно обрезать эту строку?
решение1
Зачем вы его используете, -n
если не хотите подавлять вывод по умолчанию?
Просто используйте:
sed -E -e 's/:[0-9]+$//'