아래에 주어진 문자열이 있습니다. 첫 번째 accountHeader (굵게 표시된) JSON 문자열 만 가져 오면 됩니다.
<START AdditionalInfo#:>[FormsGenerationServiceImpl::, accountNumber:ABC07667 , [Source System Request : {"Info":{"Holder": {"nameData": {"shortName": "McIntosh"}},**"accountHeader": {"a": "Y","b": "1","c": "4","draft": "P","e": "Y0000DU9","f": "T","g": "1"}**,"forms": {"maskSSN": "N","deliverForms": "G","selectedForms": {"T5": ["F10"],"T1": ["F1403"],"T2": ["F100001401"]}},"accountHeader": {"a": "Y","b": "1","c": "4","d": "HWA","draftRequestType": "P","e": "Y0000DU9","f": "T","g": "1"}}} ], null]<AdditionalInfo#: END>
내 출력은
"accountHeader": {"a": "Y","b": "1","c": "4","draft": "P","e": "Y0000DU9","f": "T","g": "1"}
다음은 몇 가지 옵션입니다.
플래그 grep
와 함께 사용 -o
하여 행의 일치하는 부분 만 인쇄하고 필터링 head
하여 첫 번째 일치 만 가져 오십시오.
grep -o '"accountHeader[^}]*}' file.json | head -n1
정규식 은 첫 번째까지 "accountHeader
가능한 한 많은 비 }
문자 를 찾습니다 }
. 기본적으로 아래의 다른 솔루션에서도 사용되는 동일한 정규식입니다.
sed
with -n
를 사용 하여 인쇄를 억제 p
하고 대체 후에는 대체가 성공한 경우에만 인쇄합니다. 그런 다음 원하는 것을 제외한 모든 것을 대체 (제거)합니다.
sed -n 's/.*\("accountHeader[^}]*}\).*/\1/p' file.json
Perl을 사용 -l
하여 각 print
호출에 개행 문자를 추가하고 -n
"입력 파일의 각 행 처리"를 의미하며 다음과 같은 스크립트를 적용합니다 -e
.
perl -lne '/.*("accountHeader[^}]*})/ && print $1' file.json
를 사용 awk
하면 **
예제 입력이 관심있는 부분을 강조 표시하고 실제 데이터에는 실제로 존재하지 않는다고 가정합니다. 그렇다면 다음과 같이 작동합니다.
awk -F'},' '{print $2"}"}' file.json
(가) 경우 **
실제로 거기에 상황은 필드 구분 기호로 사용도 간단합니다 :
awk -F'**' '{print $2"}"}' file.json
또는
perl -F"\*\*" -alne 'print $F[1]' file.json
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다