다음과 같은 줄에서 정수를 추출하려고 합니다.
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.
예상했던 결과가 나옵니다.