json 파일의 Grep 값

json 파일의 Grep 값

내 json 파일은 다음과 같습니다

[{"product":"Apple","id":"2134"},{"product":"Mango","id":"4567"}]

주어진 "제품"을 찾기 위해 grep/sed/awk 'id'를 사용하고 싶습니다.

산출:

Enter product : Apple
Your product id is : 2134

답변1

JSON 인식 도구를 사용하세요. Perl은JSON도서관:

#!/usr/bin/perl
use warnings;
use strict;

use JSON;

my $json = '[{"product":"Apple","id":"2134"},{"product":"Mango","id":"4567"}]';

print 'Enter product: ';
chomp( my $product = <> );

print 'Your product id is: ', 
    (grep $_->{product} eq 'Apple', @{ from_json($json) })[0]{id}, "\n";

답변2

// json대신 파서를 사용하십시오 .sedgrepawk

Python json모듈 사용:

#!/usr/bin/env python2
import json
with open('file.json') as f:
    f_json = json.load(f)
    print 'Enter product : ' + f_json[0]['product'] + '\nYour product id is : ' + f_json[0]['id']

산출:

Enter product : Apple
Your product id is : 2134

답변3

아래와 같이 json이라는 파일을 만들었습니다.

[{"product":"Apple","id":"2134"},{"product":"Mango","id":"4567"},{"product":"Pear","id":"1111"},{"product":"Banana","id":"2222"}]

그런 다음 명령줄에서 실행합니다.

 cat json | sed -e 's/.\?{"product"\:\"\([^\"]\+\)\","id"\:\"\([[:digit:]]\+\)[^}]}\+.\?/Enter Product : \1\nYour Product id is : \2\n/mgi'

출력은 다음과 같습니다:

Enter Product : Apple
Your Product id is : 2134
Enter Product : Mango
Your Product id is : 4567
Enter Product : Pear
Your Product id is : 1111
Enter Product : Banana
Your Product id is : 2222

답변4

에 제품 이름이 주어지면 다음을 $name사용하여 제품 ID를 구문 분석할 수 있습니다.jq

jq -r --arg name "$name" '.[] | select(.product == $name).id' file.json

예:

$ cat file.json
[{"product":"Apple","id":"2134"},{"product":"Mango","id":"4567"}]
$ name=Apple
$ jq -r --arg name "$name" '.[] | select(.product == $name).id' file.json
2134

관련 정보