명령줄에서 하위 문자열을 찾는 방법은 무엇입니까?

명령줄에서 하위 문자열을 찾는 방법은 무엇입니까?

다음과 같은 항목이 포함된 파일이 있습니다.

{"result":[]}
{"result":[{"alternative":[{"transcript":"I win","confidence":0.87958056},{"transcript":"when"},{"transcript":"Schwinn"},{"transcript":"Gwen"},{"transcript":"I went"}],"final":true}],"result_index":0}

기본적으로 "신뢰도"와 관련된 문자열이 있습니다. 이 문자열은 항상 "confidence"라는 문자열 앞에 나타납니다. 이 예에서 대상 문자열은 "I win"입니다. 명령줄 Linux 도구를 사용하여 이 파일을 구문 분석하여 대상 문자열을 얻으려면 어떻게 해야 합니까?

답변1

"간단한" 대답은 다음을 사용하는 것입니다 sed.

sed -n 's/.*\("[^"]*"\),"신뢰도".*/\1/p'파일 이름

"I win"따옴표를 제외하고 출력과 동일한 결과를 얻으려면 명령 I win의 처음 두 개의 큰따옴표를 대괄호 바깥으로 이동합니다.

sed -n 's/.*"\([^"]*\)","신뢰도".*/\1/p'파일 이름

더 나은 대답은 JSON 데이터를 구문 분석하도록 특별히 설계된 도구를 얻는 것입니다.

답변2

이는 JSON이며 Linux 도구는 JSON 처리에 적합하지 않습니다. 그리고 귀하의 조건은 그다지 명확하지 않습니다. 하지만 이 Perl 한 줄짜리 코드는 귀하의 예제 문자열 "I win"에서 생성되었습니다.

perl -0777 -nE 's/.*"(.+?)","confidence".*/$1/s; say'

관련 정보