How do I read comma separated CVS file under UNIX / Linux / BSD / Mac OS X bash script? My sample file is as follows:
FirstName LastName,DOB,SSN,Telephone,Status
You can use while shell loop to read comma-separated cvs file. IFS variable will set cvs separated to , (comma). read command will read each line and store data into each field.
#!/bin/bash INPUT=data.cvs OLDIFS=$IFS IFS=, [ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; } while read flname dob ssn tel status do echo "Name : $flname" echo "DOB : $dob" echo "SSN : $ssn" echo "Telephone : $tel" echo "Status : $status" done < $INPUT IFS=$OLDIFS
You should follow me on twitter here or grab rss feed to keep track of new changes.
Featured Articles:
- 30 Handy Bash Shell Aliases For Linux / Unix / Mac OS X
- Top 30 Nmap Command Examples For Sys/Network Admins
- 25 PHP Security Best Practices For Sys Admins
- 20 Linux System Monitoring Tools Every SysAdmin Should Know
- 20 Linux Server Hardening Security Tips
- Linux: 20 Iptables Examples For New SysAdmins
- Top 20 OpenSSH Server Best Security Practices
- Top 20 Nginx WebServer Best Security Practices
- 20 Examples: Make Sure Unix / Linux Configuration Files Are Free From Syntax Errors
- 15 Greatest Open Source Terminal Applications Of 2012

- My 10 UNIX Command Line Mistakes
- Top 10 Open Source Web-Based Project Management Software
- Top 5 Email Client For Linux, Mac OS X, and Windows Users
- The Novice Guide To Buying A Linux Laptop





![Linux Copy File Command [ cp Command Examples ]](http://s13.cyberciti.org/images/shared/rp/3/13.jpg)






![Bash Shell Scripting Disable Control-C [ CTRL+C ] Keys](http://s13.cyberciti.org/images/shared/rp/3/23.jpg)

{ 4 comments… read them below or add one }
script that worked for me
#!/bin/bash INPUT=./Zabbix_template_item.csv OLDIFS=$IFS IFS=";" [ ! -f $INPUT ] &while read Host Group itItemType itKey itValueType itDescription itDelay itHistory itTrends itDataType itUnits itMultiplier itDelta itFormula itParams itSnmpCom itSnmpOid itApplication do echo "Host : $Host" echo "Group : $Group" echo "itItemType : $itItemType" echo "itKey : $itKey" echo "itValueType : $itValueType" echo "itDescription : $itDescription" echo "itDelay : $itDelay" echo "itHistory : $itHistory" echo "itTrends : $itTrends" echo "itDataType : $itDataType" echo "itUnits : $itUnits" echo "itMultiplier : $itMultiplier" echo "itDelta : $itDelta" echo "itFormula : $itFormula" echo "itParams : $itParams" echo "itSnmpCom : $itSnmpCom" echo "itSnmpOid : $itSnmpOid" echo "itApplication : $itApplication" done < $INPUT IFS=$OLDIFSI have two Csv files one is for daily report purposed and another is for daily data purposed.
masterreport.csv file format is
CODE,1-May-12,2-May-12,3-May-12,4-May-12,5-May-12,
205,0,0,0,0,0,
23070,0,0,0,0,0,
Interface error response CRBT fail,0,1,0,0,0,
C2S exception,0,1,2,0,2,
Interface Customer Recharge Not Allowed For Receiver,2240,2078,2050,2007,2363,
—–Many more up to 45 Rows and 32 column are there
and every day we have to update the corresponding date part from below mention file.
dailyreport.csv
C2S ERROR EXCEPTION TAKING TIME TILL VALIDATION , 624
CHNL_ERROR_SNDR_AMT_NOTBETWEEN_MINMAX , 56
Card Group Slab Suspended , 7096
like how many error’s are coming on that day we have to update the main report , which are not match daily report we put the value 0 on main report.
i didn’t found any logic how to do this , can any body help this
15 years working with csv files in bash and I didn’t know this method!
Thanks a lot.
wow it’s really helpful.
Thx.