On Sunday 22 February 2009, 23:28, Mark Knecht wrote: > > <concatenation of attributes of lines 1..n> <result of line n> > > <concatenation of attributes of lines 2..n+1> <result of line n+1> > > <concatenation of attributes of lines 3..n+2> <result of line n+1> > > <concatenation of attributes of lines 4..n+3> <result of line n+1> > > The above diagram is correct when the lines chosen is 3. I suspect > that I might chose 10 or 15 lines once I get real data and do some > testing but that was harder to show in this email. A good design for > me would be a single variable I could set. Once a value is chosen I > want to process every line in the input file the same way. I don't use > 5 lines sometimes and 10 lines other times. In a given file it's > always the same number of lines.
Ok, try this for a start: BEGIN { FS=OFS=","} { r=$NF;NF-- for(i=1;i<n;i++){ s[i]=s[i+1] if(NR>=n)printf "%s%s",s[i],OFS } s[n]=$0;if(NR>=n)printf "%s,%s\n", s[n],r } Save the above code in a file (eg, program.awk) and run it with awk -v n=3 -f program.awk datafile.csv where the "n=3" part is to be replaced with the actual number of lines you want to group (eg, n=5, n=4, etc.) With your sample input and n=3, the above awk program produces the output you show.