파일에서 주어진 문자열 뒤에 오는 텍스트 찾기

파일에서 주어진 문자열 뒤에 오는 텍스트 찾기

파일의 필드 내용을 추출하고 싶습니다.

데이터는 다음과 같습니다.

{"_index":"bk","_type":"account","_id":"1","_score":1,"_source":{"a_n":1,"firstname":"Blake","lastname":"Hess","age":30,"gender":"M","address":"anything Avenue","employer":"anything","email":"[email protected]","city":"anything","state":"anything"}}

원하는 출력

Blake

답변1

jq데이터 구문 분석 의 경우 json:

jq -r '._source.firstname'

질문의 입력 데이터로 필요한 출력을 표시합니다.

답변2

원칙적으로 언급된 전용 JSON 파서는 올바른 접근 방식입니다. 어떤 이유로든 이것이 효과가 없다면,그리고실제로는 이 특정 필드 값에만 관심이 있습니다. 다음은 간단하지만더러운(!!) 필드 값을 추출하는 해킹:

awk '{split($1,fld,"\"firstname\":\"[[:alnum:]]*\"",sep); print(sep[1])}' <filename> | sed -e "s/\"firstname\":\"//" -e "s/\"$//"

이것은 기본적으로 패턴을 "firstname":"<some string>"필드 구분 기호로 사용하여 인쇄합니다.실제"firstname":"Blake"필드 구분 기호( 귀하의 경우) 값 과 이를 파이프하여 sed필드 레이블, 선행 큰따옴표 및 후행 큰따옴표를 제거합니다.

다시 말하지만, 이는 더러운 해킹이므로 가능할 때마다 특수 도구를 사용하여 수행해야 합니다.

관련 정보