如何在NiFi中提取文本第一行指定字符串存入属性
NiFi 提取指定文本到属性解决方案
方案结论
不需要在SplitText前额外新增处理器,仅通过调整现有处理器的配置即可实现需求,有两种可选实现思路:
实现思路1:拆分前提取(推荐)
如果你后续拆分的所有子FlowFile都需要用到这个提取值,建议在SplitText之前先执行提取,拆分后的子FlowFile会自动继承父FlowFile的属性,无需重复提取:
- 在
GetFile之后、SplitText之前插入ExtractText处理器 - 给
ExtractText新增自定义属性,命名为你需要的属性名(比如first_line_suffix),属性值填入如下正则:
正则说明:(?s)\A.*?(.{3,4})\R.*(?s)开启单行匹配模式,允许.匹配换行符\A匹配整个文件内容的起始位置.*?非贪婪匹配第一行前半段内容(.{3,4})捕获第一行末尾3-4位任意字符,也就是你需要的目标值\R匹配第一行的换行符
- 配置
ExtractText的Enable Canonical Equality为false,即可把捕获到的值存入first_line_suffix属性,后续拆分后的所有子FlowFile都会携带该属性。
实现思路2:拆分后提取
如果你只需要第一行对应的子FlowFile携带该属性,不需要传递给其他行的子FlowFile,可以保留你原有的流程顺序:
SplitText按行拆分后,每行对应一个子FlowFile- 在
ExtractText中新增自定义属性,属性值填入如下正则:^.*(.{3,4})$ - 后续通过
RouteText筛选出第一行的子FlowFile即可获取目标属性值。
内容的提问来源于stack exchange,提问作者Wanuch
相关产品推荐
相关产品推荐

