linuxshellcsvawk

Convert .txt to .csv in shell


I have a text file:

ifile.txt
1  4    22.0  3.3 2.3
2  2    34.1  5.4 2.3
3  2    33.0 34.0 2.3
4 12     3.0 43.0 4.4

I would like to convert it to a csv file:

ofile.txt
ID,No,A,B,C
1,4,22.0,3.3,2.3
2,2,34.1,5.4,2.3
3,2,33.0,34.0,2.3
4,12,3.0,43.0,4.4

I was trying with this, but not getting the result.

(echo "ID,No,A,B,C" ; cat ifile.txt) | sed 's/<space>/<comma>/g' > ofile.csv

Solution

  • awk may be a bit of an overkill here. IMHO, using tr for straight-forward substitutions like this is much simpler:

    $ cat ifile.txt | tr -s '[:blank:]' ',' > ofile.txt