한 줄에서 두 개의 정수를 추출하고 별도의 변수에 할당

한 줄에서 두 개의 정수를 추출하고 별도의 변수에 할당

다음과 같은 줄에서 정수를 추출하려고 합니다.

Result: 23/200

23각 정수( sum )를 별도의 변수에 할당하고 싶지만 200방법을 모르겠습니다. 나는 여기까지 왔다:

echo "Result: 23/200." | grep -o -E '[0-9]+'

출력은 다음과 같습니다.

23
200

첫 번째 또는 두 번째 행을 파이프로 연결 head -1하거나 가져올 수도 있습니다 . tail -1그러나 나는 이 둘을 구출하고 다른 변수에 할당하는 올바른 마법을 찾아내지 못했습니다.

파일로 파이프한 다음 해당 파일에서 읽는 유일한 옵션이 있습니까? 내가 지금 기대하고 있는 것은 바로 그것이다.

답변1

해당 줄에 다른 텍스트가 없다는 것을 알고 있다면

IFS=' /' read -r result first second <<<"$line"

declare -p first second

산출

declare -- first="23"
declare -- second="200"

줄에 다른 텍스트가 얼마나 있는지 모르는 경우 정규식을 사용합니다.

if [[ $line =~ ([0-9]+)/([0-9]+) ]]; then
    first=${BASH_REMATCH[1]}
    second=${BASH_REMATCH[2]}
fi

답변2

Bash에서는 다음과 같이 작동합니다.

{ read aa; read bb; } < <(echo "Result: 23/200." | grep -o -E '[0-9]+')

그러면 echo aa=$aa bb=$bb.예상했던 결과가 나옵니다.

관련 정보