Nifi - использовать обратную косую черту (\) в атрибуте потока файла - PullRequest
1 голос
/ 22 марта 2019

Привет, я пытаюсь динамически создать значение атрибута с Nifi, и это выглядит примерно так

$(absolute.path:substringAfterLast('\'):trim)

Я не могу избежать обратной косой черты, есть ли обходной путь к этому?

Ответы [ 3 ]

2 голосов
/ 22 марта 2019

Мы можем достичь этого разными способами.

Method1:

Вместо использования функции substringAfterLast используйте функцию replaceAllчтобы получить значение после

\ (last backslash).

Использовать UpdateAttribute процессор

  • добавить новое свойство как

    val

    ${absolute.path:replaceAll('(.*)(?:\\\\(.*?))+$', '$2'):trim()}

Этот regex извлечет значение после последнего обратного слеша и заменит значение атрибута absolute.path на извлеченное значение.

(или)

Method2:

Использование substringAfterLast + trim функций

${absolute.path:substringAfterLast("\\"):trim()}
1 голос
/ 24 марта 2019

Это должно сделать: ${absolute.path:substringAfterLast('\\'):trim()}. Ваша проблема в том, что вы использовали () вместо {}, вы не добавили () после функции trim и не избежали обратной косой черты.

Этот способ работает.

0 голосов
/ 22 июля 2019

Чтобы добавить к ответ Шу :

Вы также можете использовать атрибут path вашего Flowfile, чтобы получить его родительский каталог.Если бы у меня было

C:\foo\bar\myfile.txt, то ${path} даст вам bar\

Я не знаю, что вы хотите сделать с подстрокой после последней \, учитывая, как @{absolute.path} дает вам C:\something\like\this\

...