Hemanth's Scribes

web

CSV parsing methods in Linux

Author Photo

Hemanth HM

Thumbnail

#To get emails from CSV which is exported form your mail box

grep -o -i ’[^,]@[^,]’ contacts.csv

#Cut the required column assuming delimiter to be ”,”

cut -d, -f2,3 < input.csv

#For given index range

grep ${VALUE} input.csv | cut -d, -f${INDEX}

#Get first two columns of the cvs file

awk ‘{print $1”\t”$2}’ input.csv

#CSV which is of the regex /^(.*),,/ $f is the file here awk -F,’{ if ($1 != "") prefix=$1; else printf “%s%s\n”, prefix,$0 }’ $f

CSV of the format field1 , field2 , field3 , field4

we can set the FS to a regexp as FS=^ *| *, *|

FS=’,’

for(i=1;i<=NF;i++){ gsub(/^ *| *$/,"",$i); print “Field ” i ” is ” $i; }

For CSV of the format “field1”,“field2”,“field3”,“field4”

we can set the FS to FS=^|,|$ or FS=,|

FS=’,’

for(i=1;i<=NF;i++){ gsub(/^ *”|” *$/,"",$i); print “Field ” i ” is ” $i; }

#For CSV => field1,“field2,with,commas”,field3 ,“field4,foo”

$0=$0”,“;
while($0) { match($0,/[^,]*,| ”[^”]” *,/); sf=f=substr($0,RSTART,RLENGTH); # save gsub(/^ *”?|”? *,$/,"",f); # remove extra print “Field” ++c ” is ” f; sub(sf,""); # that which is matched }

This is my personal collection. Most of them suggested by the uber cool g33ks of terminal. Few bits patched by me.Out there are many ways please do comment them here.

#javascript#linux
Author Photo

About Hemanth HM

Hemanth HM is a Sr. Machine Learning Manager at PayPal, Google Developer Expert, TC39 delegate, FOSS advocate, and community leader with a passion for programming, AI, and open-source contributions.