문자열을 두 개의 문자열로 나누는 방법은 무엇입니까?

문자열을 두 개의 문자열로 나누는 방법은 무엇입니까?

h4 h7 h8 h9 h7공백을 구분 기호로 사용하여 배열 에 넣는 방법을 이미 알고 있지만 h숫자를 서로 비교하기 위해 숫자로 구분하려고 합니다.

Bash 스크립트에서 어떻게 분할할 수 있나요?

답변1

#!/bin/bash

arr=( h4 h7 h8 h9 h7 )

for thing in "${arr[@]}"; do
    num=${thing#?}
    printf 'The number in "%s" is %d\n' "$thing" "$num"
done

변수 확장이 ${variable#pattern}일치 항목을 제거하는 가장 짧은 접두사 문자열입니다. 이 패턴은 단일 문자와 일치합니다.pattern$variable?

출력은 다음과 같습니다

The number in "h4" is 4
The number in "h7" is 7
The number in "h8" is 8
The number in "h9" is 9
The number in "h7" is 7

또는 길이에 관계없이 숫자가 아닌 접두사 제거를 무시하려면 sed,

#!/bin/bash

arr=( hello4 happy7 hobbit8 hulk9 hr-department7 )

for thing in "${arr[@]}"; do
    num=$( printf '%s\n' "$thing" | sed 's/^[^[:digit:]]*//' )
    printf 'The number in "%s" is %d\n' "$thing" "$num"
done

또는 후행 숫자의 정규식 일치를 사용하십시오.

#!/bin/bash

arr=( hello4 happy7 hobbit8 hulk9 hr-department7 )

for thing in "${arr[@]}"; do
    if [[ "$thing" =~ ([[:digit:]]+)$ ]]; then
        printf 'The number in "%s" is %d\n' "$thing" "${BASH_REMATCH[1]}"
    fi
done

관련 정보