Remove first meta key from json records using shell


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Remove first meta key from json records using shell
# 1  
Old 01-18-2019
Remove first meta key from json records using shell

Hi All,

I need to get rid of initial meta key from json files with enclosed parenthesis from start and end of the lines which has total 4000 lines.

here is the sample Json records :
Code:
{"start": true, "meta": {"name": "xyz", "creation": "2017-07-14T16:20:06.000+02:00"}}

I need to remove first key,value and next key with enclosed parenthesis from each lines, like below to process further.
Code:
{"name": "xyz", "creation": "2017-07-14T16:20:06.000+02:00"}

Can any one please guide here, Thanks in advance.

Last edited by Cloud_Ninja; 01-18-2019 at 04:15 AM..
# 2  
Old 01-18-2019
Hi, try something like:
Code:
sed 's/{.*\({[^}]*}\).*}/\1/' file

To keep only the inner curly brace levels..

or try..
Code:
sed 's/{[^{]*//; s/[^}]*}\([^}]*\)$/\1/' file

To remove only the outer level.

Last edited by Scrutinizer; 01-18-2019 at 04:26 AM..
These 3 Users Gave Thanks to Scrutinizer For This Post:
# 3  
Old 01-18-2019
Thank you for quick reply, however this is not working as expected in my case , I have nested loop so it has deleted all together the big chunk of first level data.
# 4  
Old 01-18-2019
Hi Cloud_Ninja, I was still posting options, did you try the second option?
# 5  
Old 01-18-2019
Hi Scrutinizer, thank you again for your quick reply. yes option 'second' worked fine for me. I am going to try with larger file and let you know for any issues. It would be a great help if you can just explain what was your approach and syntax explanation for learner like me .
# 6  
Old 01-18-2019
if sed is not necessary
Code:
grep -o '{[^}{]\+}'

# 7  
Old 01-18-2019
If you are doing a lot with JSON files in a shell-scripting environment, could I suggest installing jq? It is certainly in the Ubuntu repositories and probably most other distribution repositories; and Mac users can install it with brew
Code:
$ echo '{"start": true, "meta": {"name": "xyz", "creation": "2017-07-14T16:20:06.000+02:00"}}' | jq .meta
{
  "name": "xyz",
  "creation": "2017-07-14T16:20:06.000+02:00"
}

Or if you prefer your output on a single line:
Code:
$ echo '{"start": true, "meta": {"name": "xyz", "creation": "2017-07-14T16:20:06.000+02:00"}}' | jq -c .meta
{"name":"xyz","creation":"2017-07-14T16:20:06.000+02:00"}

I know it's not a standard Linux tool but (in my opinion) jq is too useful to ignore.

Andrew
These 3 Users Gave Thanks to apmcd47 For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How to convert any shell command output to JSON format?

Hi All, I am new to shell scripting, Need your help in creating a shell script which converts any unix command output to JSON format output. example: sample df -h command ouput : Filesystem size used avail capacity Mounted /dev/dsk/c1t0d0s0 8.1G 4.0G 4.0G 50% /... (13 Replies)
Discussion started by: balu1234
13 Replies

2. Shell Programming and Scripting

Remove lines from multiline json

Hi , When extracting the data from API end point ,its giving multi line json .I want to remove certain lines with group": "tag" or tget and respect "item" values python test.py /data{" Id":" 7554317""group":"get", "item":"xx5e1"],"fields":} { "time": 1520460953, "... (4 Replies)
Discussion started by: akil
4 Replies

3. UNIX for Beginners Questions & Answers

Json field grap via shell script/awk

i have a json data that looks like this: { "ip": "16.66.35.10", "hostname": "No Hostname", "city": "Stepney", "region": "England", "country": "GB", "loc": "51.57,-0.0333", "org": "AS6871 British Telecommunications PLC", "postal": "E1" } im looking for a way to assign... (9 Replies)
Discussion started by: SkySmart
9 Replies

4. Shell Programming and Scripting

Passing key column from parent to child records

Hi Forum. I have this challenging issue that I'm hoping someone can help me. I have a file that contains 3 different types of segments (AM00, AM01, AM32) in a hierarchy structure and I want to be able to pass the column key from the parent record to the children records. AM00 - parent key:... (13 Replies)
Discussion started by: pchang
13 Replies

5. Shell Programming and Scripting

Removing specific records from files when duplicate key

Hello I have been trying to remove a row from a file which has the same first three columns as another row - I have tried lots of different combinations of suggestion on this forum but can't get it exactly right. what I have is 900 - 1000 = 0 900 - 1000 = 2562 1000 - 1100 = 0 1000 - 1100... (7 Replies)
Discussion started by: tinytimmay
7 Replies

6. UNIX for Advanced & Expert Users

howto remove meta info about MP4 or FLV file downloaded off Youtube?

Hi I tried a tool called mediainfo > brew info media-info media-info 0.7.51 http://mediainfo.sourceforge.net Depends on: pkg-config /usr/local/Cellar/media-info/0.7.51 (3 files, 14M) http://github.com/mxcl/homebrew/commits/master/Library/Formula/media-info.rb Got details from a test... (3 Replies)
Discussion started by: slashdotweenie
3 Replies

7. Shell Programming and Scripting

awk - splitting 1 large file into multiple based on same key records

Hello gurus, I am new to "awk" and trying to break a large file having 4 million records into several output files each having half million but at the same time I want to keep the similar key records in the same output file, not to exist accross the files. e.g. my data is like: Row_Num,... (6 Replies)
Discussion started by: kam66
6 Replies

8. Shell Programming and Scripting

How can i use shell meta characters like * ,$ <,> ?

hey guys!! please tell me ...how can i use shell meta characters like * ,$ <,> etc in command line in command line arguments literally please reply soon ..its urgent!!!! (8 Replies)
Discussion started by: tprayush
8 Replies

9. Shell Programming and Scripting

How to delete duplicate records based on key

For example suppose I have a file which contains data as: $cat data 800,2 100,9 700,3 100,9 200,8 100,3 Now I want the output as 200,8 700,3 800,2 Key is first three characters, I don't want any reords which are having duplicate keys. Like sort +0.0 -0.3 data can we use... (9 Replies)
Discussion started by: sumitc
9 Replies

10. UNIX for Dummies Questions & Answers

Generating key values for leader records

All, I have a file with text as shown below. I want the o/p file with generated values in the first column as shown in the o/p file. Pls note that the size of my file is 6 GB. How do i do this ? Input file 999999abcdef 999999ghijkl 999999mnopq 777777rosesarered 777777skyisblue Output... (1 Reply)
Discussion started by: ajfaq
1 Replies
Login or Register to Ask a Question