我想得到 \
从一个文件
它进入一种状态(带有 >>
提示)我必须执行ctrl+z才能从pig中出来,然后必须再次显式转到pig
我使用的代码是
grunt> A = LOAD 'data.txt' USING PigStorage(',') AS (username:chararray, address:char array);
grunt> B = FOREACH A GENERATE INDEXOF(username, '\', 0);
>>
但是当我对其他字符尝试同样的方法时,我得到的输出就是代码
grunt> A = LOAD 'data.txt' USING PigStorage(',') AS (username:chararray, address:char array);
grunt> B = FOREACH A GENERATE INDEXOF(username, 'a', 0);
grunt> DUMP B;
输出:
-1
-1
.
.
.
它甚至适用于chars /
, <
, >
还有我试过的大部分的魔咒。只是不是为了 \
请提出解决方案。
谢谢您。
3条答案
按热度按时间1rhkuytd1#
我也试过使用“\”,使用unicode字符,但没有一个有效。
我建议使用regex函数
g0czyy6m2#
在pig0.13.0中,即使我们尝试使用'\',它也会进入监听模式。
grunt>a=load'data.txt',使用pigstorage(',')作为(username:chararray, address:char array);
咕噜声>
--
这将进入监听模式grunt>b=foreach a generate indexof(用户名,“\”,0);
>>
因此尝试使用unicode字符“\u005c”而不是“\”符号来获取索引grunt>b=foreach a generate indexof(用户名,'\u005c',0);这也是行不通的。
所以尝试了另一种方法。
grunt>b=foreach a generate indexof(username,trim('\'),0);
这是工作和进入监听模式作为“\”的前一个问题是转义'这使它进入监听模式,从而使用空间和修剪它得到解决。
3hvapo4f3#
\
是java字符串中的元字符。它允许您指定像tab这样的字符(\t
),换行符(\n
),等等。它还允许嵌入单个引号,这样就不会终止字符串。例如,要在pig中生成由单个引号组成的字符串,可以使用'\''
. 因此,在您的示例中,您正在“转义”单引号,pig试图将它后面的所有内容解释为字符串的一部分。现在,因为您可能希望在字符串中有一个反斜杠,所以也可以对其进行转义。尝试使用
'\\'
你应该得到你想要的结果。