Hi Peter , the simplest way I see, need to transverse the all file, using a
processor property. Ex: N_lines (number of Lines to Strip on file)
import java.nio.charset.StandardCharsets
//Read the flowFile
def flowFile = session.get()
if (!flowFile) return
//Read Processor property
def nLinesToStrip=N_lines.value.toInteger() // Number of Lines to Strip
//Read flowFile and Write a new one without the first nLinesToStrip
def counter=0
try {
flowFile = session.write(flowFile, {inputStream, outputStream ->
inputStream.eachLine { line ->
counter++
if (counter > nLinesToStrip) {
outputStream.write("${line}\n".getBytes(StandardCharsets.UTF_8))
}
}
} as StreamCallback)
session.transfer(flowFile, REL_SUCCESS)
}
catch(Exception e) {
log.error(e)
session.transfer(flowFile, REL_FAILURE)
}
For better understanding how to build ExecuteScripts, in Groovy I recommend
the blog : funnifi.blogspot.com from Matt
Burgess<https://plus.google.com/u/0/116659654929723949312?prsrc=4>. Thanks Matt.
Carlos
From: Pierre Villard [mailto:[email protected]]
Sent: quarta-feira, 28 de Setembro de 2016 12:04
To: [email protected]
Subject: Re: Remove top N lines from a text file
Hi Peter,
I would recommend you the following blog by Matt:
http://funnifi.blogspot.fr/2016/02/executescript-processor-replacing-flow.html
Pierre
2016-09-28 13:01 GMT+02:00 Andrew Grande
<[email protected]<mailto:[email protected]>>:
Groovy script or a simple sed command invoked via ExecuteStreamingCommand
should do the job.
Andrew
On Wed, Sep 28, 2016, 12:18 AM Peter Wicks (pwicks)
<[email protected]<mailto:[email protected]>> wrote:
I have a CSV file where the first few lines are a summary of the report
parameters that were used to generate it. I want to strip these off in NiFi.
I’ve considered using a RegEx to match the {N} top lines, but am wondering of a
Groovy script might be a better option? I want to keep the file intact, so
splitting it by line ending and routing all of the lines through a
RouteByAttribute seems excessive.
I’ve never built a Groovy script, any examples on how I might go about this?
Thanks,
Peter