Sponsored Content
Top Forums UNIX for Beginners Questions & Answers Convert String to an Array using shell scripting in JSON file. Post 303041597 by Chubler_XL on Thursday 28th of November 2019 01:13:08 PM
Old 11-28-2019
There are a couple of things I'm a little unhappy with in my proposed solution and I'd like to update to a more robust version.

Firstly if the JSON structure contains array of objects decend() stops drilling down at the array.
Second the IP address RE is inaccurate and and gets false positives eg 999.999.999.999.

These issues are illustrated by the following example:
Code:
{
  "non-ip" : "999.2.3.1",
  "Adaptors" : [
     {"device" : "ip01" , "gateway" : "192.168.0.1" , "net_mask" : "255.255.0.0" },
     {"device": "ip12", "network_ip_v4_address":["10.38.61.1","10.38.32.1"]}
  ]
}

I have tightened down IP address RE and enhanced the decend() function it now takes a parent object parameter and will not apply f to string objects parented by arrays:
Code:
jq -c '
def decend(p;f):
  . as $in
  | if type == "object" then
    reduce keys_unsorted[] as $key
( {}; . + { ($key) : ($in[$key] | decend($in;f)) } ) | f
elif type == "array" then map( decend($in;f) ) | f
elif (p | type) == "array" then .
else f
end;
decend(.;
   if type == "string" and
       test(
           "^(" +
           "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" +
           "\\.){3}" +
           "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" +
           "$")
   then [ . ] else . end)' infile

The example above is not converted correctly:
Code:
{
  "non-ip" : "999.2.3.1",
  "Adaptors" : [
      {"device" : "ip01", "gateway" : ["192.168.0.1"], "net_mask" : ["255.255.0.0"]},
      {"device" : "ip12", "network_ip_v4_address" : ["10.38.61.1", "10.38.32.1"]}
  ]
}

This User Gave Thanks to Chubler_XL For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to Rename/Convert Files in Shell Scripting?

Hi All, I want to Rename/Convert all the .doc files in to .pdf format. I am using the following Script. But the final output is not proper. ########################################## cd /u13/prepaid/ftpdata/INfiles/sap/ for name in `ls *.doc` do name1=`echo $name | sed -e... (11 Replies)
Discussion started by: hanu_oracle
11 Replies

2. Shell Programming and Scripting

how to convert array into the string

Hi I have a line/string as follows: A=" 3498 NORDEA - INDX LINKED NORY" which was converted into an array of characters: p321$ echo "${ARR}" 3 4 9 8 N O R D E A - I N D X L I N K E D N O R Y When I am trying print this array there are blank... (4 Replies)
Discussion started by: aoussenko
4 Replies

3. Shell Programming and Scripting

array + if in linux shell scripting

Hi, I am having two set of files with different number of columns and rows. A set of files have only single row with 20 columns. B set of files have 1000s of rows with 5 columns. both set contains equal number of files. I want to save all the 20 columns of A in variables one by one and... (21 Replies)
Discussion started by: CAch
21 Replies

4. Shell Programming and Scripting

How to convert string into integer in shell scripting?

Hi All, sessionid_remote=$(echo "select odb_sessionid from sysopendb where odb_dbname='syscdr';" | sudo -u cucluster ssh ucbu-aricent-vm93 "source /opt/cisco/connection/lib/connection.profile; $INFORMIXDIR/bin/dbaccess sysmaster@ciscounity") for sid in $sessionid_remote;do if * ]];... (2 Replies)
Discussion started by: deeptis
2 Replies

5. Programming

Perl array / json

Hi All I have used the below code to print the dumper of a json #!/usr/bin/perl use LWP::Simple; use JSON qw( decode_json ); use Data::Dumper; use strict; use warnings; my (%list); my $trendsurl =... (5 Replies)
Discussion started by: ab52
5 Replies

6. Shell Programming and Scripting

UNIX or Perl script to convert JSON to CSV

Is there a Unix or Perl script that converts JSON files to CSV or tab delimited format? We are running AIX 6.1. Thanks in advance! (1 Reply)
Discussion started by: warpmail
1 Replies

7. Shell Programming and Scripting

Convert json to xml

Hello everyone, I have created a workflow that will pull down data via a RESTful API in JSON, then my code parses and modifies said data. The problem I have is that these APIs I am working with only accept XML to PUT/POST data, and I am looking for an easy way to convert my JSON file to XML. ... (2 Replies)
Discussion started by: Zaphod_B
2 Replies

8. Shell Programming and Scripting

Read csv file, convert the data and make one text file in UNIX shell scripting

I have input data looks like this which is a part of a csv file 7,1265,76548,"0102:04" 8,1266,76545,"0112:04" I need to make the output data should look like this and the output data will be part of text file: 7|1265000 |7654899 |A| 8|12660000 |76545999 |B| The logic behind the... (6 Replies)
Discussion started by: RJG
6 Replies

9. Shell Programming and Scripting

Array size in C shell scripting

Hi, I would like to know how to define the size of the array in c shell scripting. (15 Replies)
Discussion started by: gopishrine
15 Replies

10. 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
All times are GMT -4. The time now is 09:34 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy