BASH는 문자열에서 값을 얻습니다.

BASH는 문자열에서 값을 얻습니다.

이 문자열을 변수에 저장했습니다.

<li class="rainbow-list-item southern disrupted " data-line-id="lul-southern" data-severity-codes="4,6,9" data-mode="national-rail">

데이터 심각도 코드에 대한 숫자 값만 사용하고 싶습니다. 다음 사항을 명심하세요.

  1. 숫자 값은 1, 2 또는 3자입니다.
  2. 데이터 라인 ID 길이 변경

답변1

다음과 같이 할 수 있습니다:

$ MYVAR='<li class="rainbow-list-item southern disrupted " data-line-id="lul-southern" data-severity-codes="4,6,9" data-mode="national-rail">'
$ echo $MYVAR | tr ' ' '\n' | awk -F= '/data-severity-codes/ {print $2}'
"4,6,9"

필요한 경우 sed를 사용하여 "를 제거하고 공백으로 바꿀 수도 있습니다.

$ echo $MYVAR | tr ' ' '\n' | awk -F= '/data-severity-codes/ {print $2}' | sed -e 's/"//g' -e 's/,/ /g'
4 6 9

답변2

일치 연산자를 사용할 수 있습니다 =~.

#! /bin/bash
var='<li class="rainbow-list-item southern disrupted " data-line-id="lul-southern" data-severity-codes="4,6,9" data-mode="national-rail">'

if [[ $var =~ data-severity-codes=\"([^\"]+)\" ]] ; then
    echo ${BASH_REMATCH[1]}
fi

산출:

4,6,9

또는 XML 인식 도구를 사용하십시오.

xmllint --xpath li/@data-severity-codes - <<< "$var</li>" \
| cut -f2 -d\"

관련 정보