带“\”的pig indexof函数

djmepvbi  于 2021-06-21  发布在  Pig
关注(0)|答案(3)|浏览(292)

我想得到 \ 从一个文件
它进入一种状态(带有 >> 提示)我必须执行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 / , < , > 还有我试过的大部分的魔咒。只是不是为了 \ 请提出解决方案。
谢谢您。

1rhkuytd

1rhkuytd1#

我也试过使用“\”,使用unicode字符,但没有一个有效。
我建议使用regex函数

g0czyy6m

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);
这是工作和进入监听模式作为“\”的前一个问题是转义'这使它进入监听模式,从而使用空间和修剪它得到解决。

3hvapo4f

3hvapo4f3#

\ 是java字符串中的元字符。它允许您指定像tab这样的字符( \t ),换行符( \n ),等等。它还允许嵌入单个引号,这样就不会终止字符串。例如,要在pig中生成由单个引号组成的字符串,可以使用 '\'' . 因此,在您的示例中,您正在“转义”单引号,pig试图将它后面的所有内容解释为字符串的一部分。
现在,因为您可能希望在字符串中有一个反斜杠,所以也可以对其进行转义。尝试使用 '\\' 你应该得到你想要的结果。

相关问题