Thanks for the posts everyone. I need to use transformLine, though my SSCCE did not suggest that, so filterLine will not work for me. Armin, Great idea initialising to null. Works well. Only issue I think is that an extra blank line is added to file2.txt. I then have to strip this as it later causes an import error for me....
Tom.
Armin Ehrenfels wrote:
Tom Corcoran schrieb:
> I am wondering if there any way I am missing of skipping lines when using
> transformLine?
>
> The last line in the closure is the line value written. Looking at a SSCCE,
> we have file1.txt with 4 lines:
>
> line1
> line2
> line11
> line22
>
> I want to produce the file2.txt with 2 lines:
>
> line1
> line11
>
> import java.util.regex.Matcher
> import java.io.Reader
> import java.io.Writer
>
> def file1 = /C:\Workspace\Test\file1.txt/
> def file2 = /C:\Workspace\Test\file2.txt/
> def writeLine
> FileWriter writeFile = new FileWriter(file2)
> new FileReader(file1).transformLine(writeFile) { line ->
> Matcher m1 = line =~ /line1\d*/
> writeLine = ''
> if (m1.matches()) {
> writeLine = line
> }
> writeLine
> }
>
> will give:
>
> line1
> <blank line>
> line11
> <blank line>
>
> I could then reprocess the field to remove blank lines, but it would be
> great if there was a way of skipping lines with transformLine.
>
In the closure, just initialize writeLine = null instead of writeLine = ''.