我想提取文件中字段的内容
数据的样子:
{"_index":"bk","_type":"account","_id":"1","_score":1,"_source":{"a_n":1,"firstname":"Blake","lastname":"Hess","age":30,"gender":"M","address":"anything Avenue","employer":"anything","email":"[email protected]","city":"anything","state":"anything"}}
所需的输出
Blake
答案1
用于jq
解析json
数据:
jq -r '._source.firstname'
通过问题的输入数据,它会显示所需的输出。
答案2
原则上,提到的专用 JSON 解析器是正确的方法。如果由于某种原因这对你不起作用,和您确实只对这个特定的字段值感兴趣,那么以下是一个快速但肮脏的(!!) hack 提取字段值:
awk '{split($1,fld,"\"firstname\":\"[[:alnum:]]*\"",sep); print(sep[1])}' <filename> | sed -e "s/\"firstname\":\"//" -e "s/\"$//"
这基本上使用模式"firstname":"<some string>"
作为字段分隔符,打印实际的字段分隔符的值("firstname":"Blake"
在您的情况下),并将其通过管道传递sed
以删除字段标签,前导双引号和尾随双引号。
同样,这是一种肮脏的黑客行为,应尽可能使用专用工具。