0
inputData = load '/user/admin/logs/chat_miss' as line:chararray;
filteredData = filter inputData by line matches '([\\d\/]+)\/([\\d:]+)\\s+([\\w\\d]+)\\s+([\\w\\W]+):\\s+([\\w]+)\\W+([\\w]+)\\s+([\\w\/-]+.\\w+)';

上記は、ファイルをロードし、各行をこの正規表現と照合するサンプルの 2 行のコードです。すべてのメタキャラクターには追加のバックスラッシュが必要であることがわかりました。しかし、問題はスキップしたい特殊文字にあります。

これはエラーです:

ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: <line 7, column 55>  Unexpected character '/'

これは、一致することを期待していたサンプル行です。

13/06/2016/19:15:32 imagecache1 varnishd[8412]:  MISS        :  chat     /cloud/chatContens-139/2111400434/3646261465820934391.jpg
4

1 に答える 1

0

バックスラッシュをスキップするたびに、追加のバックスラッシュも必要であることがわかりました。すなわち

filteredData = filter inputData by line matches '([\\d\\/]+)\\/([\\d:]+)\\s+([\\w\\d]+)\\s+([\\w\\W]+):\\s+([\\w]+)\\W+([\\w]+)\\s+([\\w\\/-]+.\\w+)';
于 2016-09-20T05:50:57.013 に答える