我有一个文本文件,其结构不在一行中,可以肯定这些行以零(0)开头。以下是样本:
header : TEXT<br>
header : TEXT<br>
header : TEXT<br>
line 1 : 0TEXT Name Other Field<br>
line 2 : TEXT Other Field Phone<br>
line 3 : 0TEXT Name Other Field<br>
line 4 : TEXT Other Field Phone<br>
line 5 : 0TEXT textexttexttext <br>
line 6 : 0TEXT Name Other Field<br>
line 7 : TEXT Other Field Phone<br>
line 8 : 0TEXT Name Other Field<br>
line 9 : TEXT Other Field Phone<br>
我想要做的是通过正则表达式评估NAME和PHONE字段并存储这些值。
姓名,电话 姓名,电话
正则表达式部分没问题,我已经做到了。
我需要知道的是如何从两个不同的行中获取值并将它放在同一个寄存器中?
我发现这个论坛http://forums.pentaho.com/showthread.php?53288-Reading-multi-line-records-from-text-file-newbie 并尝试应用javascript建议,但它对我不起作用,也许我做错了什么..
我确实做了一些简单的错误并修复了它。
JS ..
var x;
var charInitial = line.toString().charAt(0);
if(charInitial == '0') {
x = line.toString();
}
else{
x += line.toString();
}
使用这个脚本我将行分开,我想连接它们并在应用正则表达式之后。我可以连接属于该组的所有行,并且使用正则表达式我可以删除它那是不必要的。
由于
答案 0 :(得分:0)
鉴于您有多行记录,您有以下选择:
1)分组依据:只要您可以通过某组键识别属于一起的行,就可以使用group by并创建两个新字段,Name和Phone,由&#34; Concatenate字段分隔由&#34; (不是&#34;连接字段分隔,&#34;,请注意)。如果值是要保留的值或为null,则串联起作用; 2)去标准化。同样的原则适用,您需要一组密钥来识别属于一起的记录,但您需要将您的姓名和电话放在同一个字段中(例如,值),并且您需要另一个带密钥的字段(姓名或电话) )。 3)也许是最好的一个:分析查询:使用&#34;滞后N行向前并获得字段&#34;如果N = 1,您将获得下一行的电话号码。在此步骤之后,您将拥有一个名为Not null的行和下一行的电话号码;具有空名称和空电话号码的行。过滤您想要的行并完成。
这只是一个通用的想法。你必须弄清楚细节。