bash에서 mongo 쿼리에서 json 응답을 받았습니다.
...
json=`echo $con`
echo $json
결과는 다음과 같습니다.
{ "_id" : "579289cc0", "externalId" : "2911", "externalTenantGUID" : "29d3928e53b", "name" :["X", "Y"] ... }{ "_id" : "5792892323", "externalId" : "291e31", "externalTenantGUID" : "29d3928e3253b", "name" :["X", "Y"] ... }{ "_id" : "57923320", "externalId" : "293211", "externalTenantGUID" : "29d3928322e53b", "name" :["X", "Y"] ... }
여기서는 $ con 응답을 구문 분석하고 579289cc0, 5792892323, 57923320과 같이 "_id"에 매핑 된 값만 가져 오려고합니다. sed 및 awk를 성공하지 않고 사용해 보았습니다 (매니 조건에 따라). 파이썬을 설치하지 않고 더 간단한 방법이 있습니까?
perl
regEx 구문을 사용하면 다음과 같이 할 수 있습니다. 이것이 유스 케이스를 달성하는 해키 방법이지만 jq
끊어진 json
문자열 을 수정 하고 해당 식별자를 추출하는 데 사용 하는 것이 좋습니다 . 지금은 할 수 있습니다.
perl -lne 'print "$1" if /.*\"_id\" : \"([[:alnum:]]+)\".*/' file
579289cc0
5792892323
57923320
또한 grep
PCRE를 활성화 하여 사용할 수 있습니다 . 즉, -P
Perl 스타일 정규식 일치에 대한 플래그 와 함께 사용할 수 있습니다 .
grep -Po "\"_id\" :\K \"([[:alnum:]]+)\"" <<<"$json"
"579289cc0"
"5792892323"
"57923320"
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다