I’m trying to write a bash script that imports a CSV file and sends it off to somewhere on the web. If I use a handwritten CSV, i.e:
summary,description
CommaTicket1,"Description, with a comma"
QuoteTicket2,"Description ""with quotes"""
CommaAndQuoteTicke3,"Description, with a commas, ""and quotes"""
DoubleCommaTicket4,"Description, with, another comma"
DoubleQuoteTicket5,"Description ""with"" double ""quoty quotes"""
the READ command is able to read the file fine. However, if I create “the same file” (i.e: with the same fields) in Excel, READ doesn’t work as it should and usually just reads the first value and that’s all.
In relatively new to Bash scripting, so if someone thinks its a problem with my code, I’ll upload it, but it seems it’s a problem with the way Excel for Mac saves files, and I thought someone might have some thoughts on that.
Anything you guys can contribute will be much appreciated. Cheers!
By default, Excel on Mac indicates new records using the carriage-return character, but bash is looking for records using the newline character. When saving a file in Excel for Mac, be sure to change the character encoding (an option that is available when saving the file) to DOS or Windows, or the like, which should pop in a carriage-return and a newline, and should be “readable”.
Alternatively, you could just process the file with
tr, and convert all the CRs to LFs, i.e.,One way you can verify if this actually is the problem is by using
odto inspect the file. Use something like:And look for the end-of-line character.
Finally, you could also investigate bash’s internal
IFSvariable, and set it to include “\r” in it. See: http://tldp.org/LDP/abs/html/internalvariables.html