maven 에 대한 colorize 스크립트 의 핵심으로 몇 가지 대체 명령을 실행합니다 . sed
명령 중 하나는 여기에 설명 된 대로 쉘에서 찾을 수있는 정규식을 사용합니다 . 현재 (작동하지 않는) 구현은 여기 에서 찾을 수 있습니다 .
명령의 변형 중 하나를 스크립트에 포함하면 다른 동작이 발생합니다.
변형 1 :
$ sed -re "s/([a-zA-Z0-9./\\ :-]+)/\1/g"
스크립트에 적용 :
-re "s/WARNING: ([a-zA-Z0-9./\\ :-]+)/${warn}WARNING: \1${c_end}/g" \
오류 : 셸이를 입력하는 것과 동일한 정보를 출력합니다 $ sed
. 이상한!?
변형 2 :
$ sed -e "s/\([a-zA-Z0-9./\\ :-]\+\)/\1/g"
스크립트에 적용 :
-e "s/WARNING: \([a-zA-Z0-9./\\ :-]\+\)/${warn}WARNING: \1${c_end}/g" \
오류:
sed : -e 식 # 7, char 59 :`s '명령의 RHS에 대한 잘못된 참조 \ 1
특히 .NET을 해석 할 때 작은 따옴표
—
not2qubit
'
와 큰 따옴표 "
가 약간 다르게 취급 된다는 점에 유의해야합니다 $vars
. 예 : sudo sh -c "sed -r -i 's/(^.+_supplicant.conf)/\1${MTXT}/' /etc/network/interfaces"
작동하지만 : sudo sh -c 'sed -r -i "s/(^.+_supplicant.conf)/\1${MTXT}/" /etc/network/interfaces'
작동하지 않습니다.
-i
와 (장소 옵션 편집)-re
의 결과로,-ire
(그래서-i
소비 한re
그와 같은 단편SUFFIX
인수 따라서 확장 된 정규식 모드가 활성화되지되었다);-i -re
문제를 해결 하기 위해 변경합니다 .