Bash 매개변수 대체(baparmsub?)가 작동하지 않습니다.

Bash 매개변수 대체(baparmsub?)가 작동하지 않습니다.

[ 사용 중bash -cx 'a="_IN_workstation"; b=${a/[a-zA-Z]*[a-zA-Z]/_};echo x.$bx'는 부분적으로 작동하지만 괄호가 없으면 일치가 왜곡됩니다. 그래서 이것은 괄호 처리가 문제라는 것을 가리키지만 나는 다음의 작업을 보았습니다.GNU 자동 설정그것은 다른 것을 제안합니다. bash 내부에 대해 잘 아는 사람 있나요? ]

알파벳 문자를 제거하기 위해 _PREROUTING _POSTROUTING과 같은 값을 공급하는 데 문제가 있습니다.

a=${step/\_+([a-zA-Z]/\_}
[ note: replacing underscore with \x5f does nothing for the script although using sed works via 's/_[a-zA-Z][a-zA-Z]*/_/gp' but that is NOT what i __wanted__]   

(GNU)[https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html]은 내 의견에 동의하는 것 같습니다. 내 bash에는(5.1)이 없습니다.상점 +patsub_replacement5.2에서 사용 가능합니다.

리눅스 민트 버전과 bash 버전 참조단계변수 및 [원본 스크립트]
(Bash에는 cmdline nft cmd와 스크립트에 문제가 있습니다)

시도했지만 [:alpha:]스크립트에서는 작동하지 않으며 명령줄에서는 거의 작동하지 않습니다.

답변1

shopt -s extglob일반적 on으로 대화형 쉘용이지만 off스크립트에서는 사용해야 합니다 .

#!/bin/bash
shopt -s extglob

step=_SOME_under_SCORES
a=${step//_+([a-zA-Z])/_}

echo "[$step]=>[$a]"
$ ./check.sh
[_SOME_under_SCORES]=>[___]

man bash섹션을 참조하세요패턴 매칭:

만약익스트글로브 쉘 옵션이 shopt 내장을 사용하여 활성화되면 여러 확장 패턴 일치 연산자가 인식됩니다 [...]

답변2

기계신들은 나를 비웃을 만큼 충분한 시간을 보냈던 것 같다. Alexey Ten은 제가 믿는 답변에 상당한 기여를 했습니다.

y= ${단계//_[[:alpha:]]+([[:alpha:]])/_}

관련 정보