在文件中查找给定字符串后的文本

在文件中查找给定字符串后的文本

我想提取文件中字段的内容

数据的样子:

{"_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以删除字段标签,前导双引号和尾随双引号。

同样,这是一种肮脏的黑客行为,应尽可能使用专用工具。

相关内容