私の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
代わりにパーサーを使用してください。sed
grep
awk
Pythonjson
モジュールの使用:
#!/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