如何解码awk中的JSON编码列?

时间:2013-02-19 07:39:30

标签: json shell unix awk

说我有一个制表符分隔文件。在其中,我有一个用JSON编码的数据列。有没有办法解码JSON数据并以有意义的方式使用它?理想情况下,该方法会将JSON数据解码为awk的哈希表/数组。或者,像Hive get_json_object这样的东西也会起作用。

2 个答案:

答案 0 :(得分:0)

Awk没有任何解码JSON的工具。现在是时候转向更通用的编程语言,比如Perl,Python或Ruby,所有这些语言都有处理JSON和列分隔文本的模块。

答案 1 :(得分:0)

tl;博士:不要这样做。

详细阐述常见观点:awk具有函数(包括递归),关联数组,许多内置字符串函数以及正则表达式支持。所以,是的,可以为此编写一个Awk程序。这可以用单线程完成,这是Awk最常用的吗?非常不可能。

e.g。考虑这个微小的JSON“对象”:{a: b, c: d}作为唯一的字段。

这可能是你的Awk计划:

echo {a: b, c: d} | awk 'BEGIN {FS="\t"}
     {sub("{", "", $1); sub("}", "", $1); split($1, array, ", ");
         for (key in array) {
             split(array[key], array2, ": ");
             dict[array2[1]] = array2[2];
         }
     }
     END {for (key in dict) print key, dict[key]}'

这最终会给你一个带有“a”和“b”键的“dict”,以及值“c”和“d”。难以构建,难以维护和修改。省去麻烦。有许多更整洁的替代品。例如Python JSON