2

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

4

2 回答 2

0

tl;博士:不要这样做。

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

例如,考虑这个微小的 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]}'

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

于 2013-02-28T05:24:11.280 回答
0

awk 没有任何解码 JSON 的工具。是时候改用更通用的编程语言了,比如 Perl、Python 或 Ruby,它们都有处理 JSON 和列分隔文本的模块。

于 2013-02-20T03:09:59.753 回答