我有一个.avsc
文件,该文件的数据格式为json
,如下所示
{
"type":"records",
"name": "settings_table",
"fields": [
{
"name": "testing_value",
"default":null,
"type": [
"null",
"string"
]
},
{
"name": "description",
"default":null,
"type": [
"null",
"string"
]
},
{
"name": "key_value",
"default":null,
"type": [
"null",
"long"
]
}
]
}
我想创建一个文件,其输出如下所示
testing_value string
description string
key_value long
我在下面的Linux
中尝试过
cat file_name.avsc | python -m json.tool > temp_file_name.avsc
sed -i 's/\"//g;s/\,//g' temp_file_name.avsc
grep name temp_file_name.avsc|cut -d':' -f2|tr "[:upper:]" "[:lower:]" > new_file_after_parsing.txt
我得到的结果如下
testing_value
description
key_value
答案 0 :(得分:1)
可能最简单的方法是使用jq
:
jq '.fields[] | "\(.name) \(.type[1])" ' x.avcs | xargs -n1 echo
也就是说,遍历您的fields
数组,在类型列表中拉出其名称和第二项的字符串,然后使用echo
将其打印出来而不加引号。
我确定这段代码有一些极端的情况,但是我不知道你是否会碰到它们。