Apache nifi 在nifi中检查流文件中的页眉和页脚

Apache nifi 在nifi中检查流文件中的页眉和页脚,apache-nifi,Apache Nifi,我是Apache NiFi新手,我正在尝试解决以下场景: 我有一个以下格式的文件: @RTOAJVNODSVODSONBBVOIROI uvdsoiuvoibvds @RBCinbdiuvidsnb 每行以新行字符结尾。第一行和最后一行是页眉和页脚行。我需要检查页眉和页脚行是否分别有@RTO和@RBC。如果是,我需要路由流文件 我试图使用RouteOnContent处理器来实现这一点,使用正则表达式(@RTO)[\\S\\S\\w\\w]*(@RBC)[\\S\\S\\w\\w]*。我用Ja

我是Apache NiFi新手,我正在尝试解决以下场景:

我有一个以下格式的文件:

@RTOAJVNODSVODSONBBVOIROI
uvdsoiuvoibvds
@RBCinbdiuvidsnb

每行以新行字符结尾。第一行和最后一行是页眉和页脚行。我需要检查页眉和页脚行是否分别有@RTO和@RBC。如果是,我需要路由流文件

我试图使用
RouteOnContent
处理器来实现这一点,使用正则表达式
(@RTO)[\\S\\S\\w\\w]*(@RBC)[\\S\\S\\w\\w]*
。我用Java测试了它,结果很好,但在NiFi中不起作用


附加处理器属性屏幕截图-

我认为您的正则表达式不足以匹配换行符。我已经创建了一个工作版本(
\a(@RTO)(.*\n)*(@RBC.*\z
)。此模板生成流文件,并使用以下任一项填充它们:

  • 上面提供的页眉和页脚标志
  • 只有标题
  • 只有页脚
  • 都不是

然后相应地对它们进行路由。我认为您的描述是“页眉和页脚显示”或“其他”,但您可以根据需要进行修改

请附上RouteContent处理器配置的屏幕截图好吗?我已经添加了处理器属性的图像。这不是我想要做的。我正在使用包含数据的Get File创建一个流文件。如果数据有页眉和页脚,我需要将该文件放到某个位置。所以,我的流程是Get File->RouteOnContent->PutFile。问题是RouteOnContent在正则表达式中没有按预期工作。Saharsh,我不知道从哪里获取文件,所以我只是在NiFi中生成了它,但是
GetFile
应该可以。你确定没有奇怪的编码问题吗?我复制了您在问题中提供的文本,并使用了我在回答中列出的正则表达式,它成功地将1/4的流文件(带有页眉和页脚的流文件)路由到了与其他流文件不同的
LogAttribute
处理器。您是否将所有流文件路由到“unmatched”
LogAttribute
?Andy,我提供的数据只是数据的一种格式。我在原始文件上运行它,但没有得到所需的输出。所有流文件都将路由到不匹配的。我不认为有任何编码问题。你能提供数据的实际例子吗?我无法给出数据的实际问题。然而,我解决了这个问题,首先在另一个处理器中检查页眉,然后检查页脚。