Вы можете использовать процессор ReplaceText
, который заменяет \A\n|\n*\s*(?=\n)
на ''
(пустое значение замены).Регулярное выражение поиска ищет:
\A\n
- начало содержимого, за которым сразу следует новая строка ИЛИ \n*\s*(?=\n)
- новая строка (0 или более) с последующим пробелом (0 или более), за которым следует символ новой строки (не перехвачен с использованием группы предпросмотра)
Обновление
Не уверен, почему за это проголосовали или сделалине работает для некоторых пользователей, так как я просто создал шаблон , и он работал точно так, как описано.
![Overview of NiFi flow](https://i.stack.imgur.com/Zy3tZ.jpg)
![Configuration of GenerateFlowFile processor](https://i.stack.imgur.com/yORxI.png)
![Configuration of ReplaceText processor](https://i.stack.imgur.com/Ze7m9.png)
2019-01-08 12:25:27,642 INFO [Timer-Driven Process Thread-2] o.a.n.processors.standard.LogAttribute LogAttribute[id=2f22d047-0168-1000-47b0-9ec963e65367] logging for flow file StandardFlowFileRecord[uuid=6c9cc388-19c8-4b98-9970-6a6e3979e4ee,claim=StandardContentClaim [resourceClaim=StandardResourceClaim[id=1546979126561-1, container=default, section=1], offset=152, length=50],offset=0,name=6c9cc388-19c8-4b98-9970-6a6e3979e4ee,size=50]
--------------------------------------------------
Standard FlowFile Attributes
Key: 'entryDate'
Value: 'Tue Jan 08 12:25:27 PST 2019'
Key: 'lineageStartDate'
Value: 'Tue Jan 08 12:25:27 PST 2019'
Key: 'fileSize'
Value: '50'
FlowFile Attribute Map Content
Key: 'filename'
Value: '6c9cc388-19c8-4b98-9970-6a6e3979e4ee'
Key: 'path'
Value: './'
Key: 'uuid'
Value: '6c9cc388-19c8-4b98-9970-6a6e3979e4ee'
--------------------------------------------------
header1,header2,header3
A1,A2,A3
B1,B2,B3
C1,C2,C3