How to print first column of next line in current line

awktext processing

I have some file like this :

abc 123    
abc 789  
bcd 456  
acb 135

I would like to print first column of next line in current line.

Desired output:

abc  123 abc  
abc 789 bcd  
bcd 456 acb  
acb 135 

I prefer to use awk.

Best Answer

Memorise the previous line:

awk 'NR > 1 { print prev, $1 } { prev = $0 } END { print prev }'

This processes the input as follows:

  • if the current line is the second or greater, print the previous line (stored in prev, see the next step) and the first field of the current line, separated by the output field separator (the space character by default);
  • in all cases, store the current line in the prev variable;
  • at the end of the file, print the previous line.
Related Question