숫자 문자열의 출력을 단락 문자열로 가져옵니다.

숫자 문자열의 출력을 단락 문자열로 가져옵니다.

.jar스크립트의 변수 에 출력이 저장되어 있습니다.

Token is: XYZ123
Not found in page: 0
Not found in page: 1
Not found in page: 2
Found with ID : #14214733

#이제 ie 다음에 ID를 추출하여 다른 변수에 저장하고 싶습니다 14214733. bash에서 어떻게 할 수 있습니까?

편집 : 다음을 사용하여 해결echo ${var##*#}

답변1

bash를 사용하여 정규식으로 캡처

output='Token is: XYZ123
Not found in page: 0
Not found in page: 1
Not found in page: 2
Found with ID : #14214733'

[[ $output =~ "Found with ID : #"([0-9]+) ]] && id=${BASH_REMATCH[1]}

echo $id    # => 14214733

Bash 정규식에서는 리터럴 텍스트 부분이 인용되지만 정규식 특수 콘텐츠는 인용되지 않습니다. 캡처된 부분은 BASH_REMATCH 배열로 들어갑니다.

답변2

한 가지 방법은 다음과 같습니다.

sec_var=`cat ts.txt | grep -oE 'ID : #([0-9]+)' | cut -f2 -d '#'`
sec_var=`echo $first_var | grep -oE 'ID : #([0-9]+)' | cut -f2 -d '#'`

grep "-z" 옵션을 사용할 수도 있습니다.

-z는 줄 끝의 개행을 억제하고 이를 널 문자로 바꿉니다. 즉, grep은 줄의 끝이 어디에 있는지 알고 있지만 입력을 하나의 큰 줄로 처리합니다.

관련 정보