
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]+$//'