Search code examples
stringawksedconcatenationline

Joining consecutive lines using awk


How can i join consecutive lines into a single lines using awk? Actually i have this with my awk command:

awk -F "\"*;\"*" '{if (NR!=1) {print $2}}' file.csv

I remove the first line

44895436200043
38401951900014
72204547300054
38929771400013
32116464200027
50744963500014

i want to have this:

44895436200043 38401951900014 72204547300054 38929771400013 32116464200027 50744963500014

csv file

enter image description here


Solution

  • I assume you want to modify your existing awk, so that it prints a horizontal space separated list, instead of words, one per row.

    You can replace the print $2 action in your command, you can do this:

    awk -F "\"*;\"*" 'NR!=1{u=u s $2; s=" "} END {print u}' file.csv
    

    or replace the ORS (output record separator)

    awk -F "\"*;\"*" -v ORS=" " 'NR!=1{print $2}' file.csv
    

    or pipe output to xargs:

    awk -F "\"*;\"*" 'NR!=1{print $2}' file.csv | xargs