В моей работе NiFi я запускаю скрипт groovy через InvokeScriptedProcessor. Сценарий Groovy должен считывать файл с разделителями \ u0001 и выполнять некоторые преобразования для нескольких столбцов. Ниже приведен фрагмент кода, который я написал для разделения столбцов записи.
def fieldDelimiter = context.getProperty(csvFieldDelimiter).evaluateAttributeExpressions().getValue()
while (line = bufferedReader.readLine()) {
String[] cols = line.split(Pattern.quote(fieldDelimiter),-1)
Скрипт не разделяет запись и выдает выходные данные, аналогичные входным. Но он работает для других разделителей, таких как запятая, точка с запятой, труба и т. Д. c.,
Ниже приведены параметры, предоставленные в InvokeScriptedProcessor.
Я что-то не так делаю? Если я тестирую приведенный ниже фрагмент кода в Groovy, доступном на моем локальном рабочем столе, он работает нормально.
def fieldDelimiter = "\u0001"
def columns = "col1\u0001col2"
String[] cols = columns.split(Pattern.quote(fieldDelimiter),-1)
println "cols output: " + cols[1]
РЕДАКТИРОВАТЬ: (содержимое файла потока)