2

タブ区切りのファイルがあるとします。その中に、JSON でエンコードされたデータ列があります。JSON データをデコードして意味のある方法で使用する方法はありますか? 理想的には、メソッドは JSON データを awk のハッシュ テーブル/配列にデコードします。あるいは、Hive のget_json_objectのようなものも同様に機能します。

4

2 に答える 2

0

AwkにはJSONをデコードする機能がありません。今こそ、Perl、Python、Rubyなどのより汎用的なプログラミング言語に移行するときです。これらの言語にはすべて、JSONと列区切りのテキストの両方を処理するためのモジュールがあります。

于 2013-02-20T03:09:59.753 に答える
0

tl;dr: やらないでください。

一般的な意見を詳しく説明すると、Awkには関数(再帰を含む)、連想配列、正規表現をサポートする多くの組み込み文字列関数があります。そうです、このための Awk プログラムを作成することは可能です。これは、Awkが主に使用されるワンライナーで実行できますか? 非常にありそうもない。

たとえば、この小さな JSON "object":{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」、および値「c」と「d」を持つ「dict」が得られます。構築が難しく、保守と変更が困難です。手間を省いてください。多くのきちんとした代替手段があります。例: Python JSON

于 2013-02-28T05:24:11.280 に答える