Reputation:
I have a CSV file that looks like this:
English, "Hawkin, Jason" ,JHAWKIN110@exampleemail.com
English, "McDonald, Matt" ,MMCDONALD114@exampleemail.com
English, "Campbell, Josh" ,JCAMPBELL111@exampleemail.com
My intention is to make a Bash Script to make a second CSV file with the following format:
ID, Email, FNAME, LNAME
jhawkin110, JHAWKIN110@exampleemail.com, Jason, Hawkin
After using "cut" to remove the first column I did not need, I am at a loss on how to create the "ID" by extracting the first part of the "Email".
Upvotes: 0
Views: 455
Reputation: 11247
Using awk
$ awk 'BEGIN {FS=OFS=","; print "ID, Email, FNAME, LNAME"}{gsub(/"/,"");split($NF,a,"@"); print tolower(a[1])," " $NF, $3, $2}' input_file
ID, Email, FNAME, LNAME
jhawkin110, JHAWKIN110@exampleemail.com, Jason , Hawkin
mmcdonald114, MMCDONALD114@exampleemail.com, Matt , McDonald
jcampbell111, JCAMPBELL111@exampleemail.com, Josh , Campbell
Using sed
$ sed -E 's/.*"([^,]*),([^"]*)..,(([^@]*)@.*)/\3,\2, \1,\L\4/;s/(.*),(.*)/\2, \1/;1iID, Email, FNAME, LNAME' input_file
ID, Email, FNAME, LNAME
jhawkin110, JHAWKIN110@exampleemail.com, Jason, Hawkin
mmcdonald114, MMCDONALD114@exampleemail.com, Matt, McDonald
jcampbell111, JCAMPBELL111@exampleemail.com, Josh, Campbell
Upvotes: 1