Raw Input Desired Output
line 1
line 2
line 3
line 4
line 5
line 6
line 1 line 2 line 3 line 4 line 5
line 6
Script and Comments
Script1
[ 1] :loop0
[ 2] $!N
[ 3] $!b loop0
[ 4] :loop1
[ 5] s/\n([^\n]*\n)/ \1/g
[ 6] t loop1
Comments
  1. The `-r' option of GNU sed must be used or we have to escape the parentheses used in Step [5].
  2. Steps [1] thru [3] constitute a loop which iterates until all lines have been read to Pattern Space.
  3. Steps [4] thru [6] constitute a loop which deletes all except the last newline characters, let's take the sample as an example:
    After n-th
    iteration
    contents
    Initialline 1 \n line 2 \n line 3 \n line 4 \n line 5 \n line 6
    1 line 1 line 2 \n line 3 line 4 \n line 5 \n line 6
    2 line 1 line 2 line 3 line 4 \n line 5 \n line 6
    3 line 1 line 2 line 3 line 4 line 5 \n line 6