I had a need to extract the value of a particular string field in a JSON file. There were a lot of files and I wanted to process them all so I could use that value in a bash script:
#!/bin/bash # arg: filename # return: contents of file without \n function build_file { while read line do str="$str $line" done < $1 echo $str } # first arg: filename # second arg: field function extract_field { text=`build_file $1` regex='"'$2'":\s*"([^"]*)"' if [[ $text =~ $regex ]]; then echo ${BASH_REMATCH[1]} else echo "$2 not found in $1" fi } # change this value to that of your field-name field=docid for f in *.json; do echo `extract_field $f $field` done
You run this script in a directory where there are .json files. It then prints out the value of that field (minus the quotes) or an error message. Change the "docid" line to the name of your desired field.
No comments:
Post a Comment