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