.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은 줄의 끝이 어디에 있는지 알고 있지만 입력을 하나의 큰 줄로 처리합니다.