문자열에서 마지막 X자를 추출할 수 없습니다. [닫기]

문자열에서 마지막 X자를 추출할 수 없습니다. [닫기]

저는 Mac, bash 버전 5.0.2를 사용하고 있습니다.

받다:

    v="ksdjfksjkjsdf"
    v2=${v::-6}

이것을 얻었습니다:

-bash: -6: substring expression < 0

답변1

Bash 4.2에는 음수 길이 사용이 추가되었습니다.:

${PARAMETER:OFFSET:LENGTH}: 음수 LENGTH 값은 문자열 끝에서 4.2-알파 오프셋으로 사용됩니다.

Bash 버전 4.2.53, 4.4.12 및 5.0.3에서 작동하는 것으로 보입니다. 이들 중 하나에 대해 나는 다음을 얻습니다.

$ s=123456; echo "${s::-2}"
1234
$ s=123456; echo "${s::-8}"
bash: -8: substring expression < 0

즉, 음수 길이의 절대값이 문자열 길이보다 크지 않은 한 작동합니다.

답변2

스크립트를 실행하는 데 올바른 bash 버전을 사용하고 있습니까? 당신의 셔뱅 라인은 안녕하십니까? 스크립트를 호출하는 방법bash myscript.sh?

답변3

이것은 작동합니다:

v="aksdjfkajsdkfjakdf"
length=${#v}
v2=${v:0: length - 6}

답변4

나는 다음 방법으로 그것을했다

v="ksdjfksjkjsdf"
echo $v| awk -F "" '{gsub("","\n",$0);print $0}'| sed '/^$/d'| sed -n '1,7p'| perl -pne g"/\n//g"

산출

 echo $v| awk -F "" '{gsub("","\n",$0);print $0}'| sed '/^$/d'| sed -n '1,7p'| perl -pne g"/\n//g"

ksdjfks

관련 정보