保存在Excel中时,Sed不读取CSV

时间:2012-08-20 02:46:22

标签: excel bash csv

我正在尝试编写一个bash脚本,用于导入CSV文件并将其发送到Web上的某个位置。如果我使用手写的CSV,即:

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"""

READ命令能够正确读取文件。但是,如果我在Excel中创建“相同的文件”(即:具有相同的字段),则READ不能正常工作,通常只读取第一个值,而这就是全部。

相对较新的Bash脚本,所以如果有人认为我的代码有问题,我会上传它,但似乎Excel for Mac保存文件的方式有问题,我觉得有人可能会有一些想法在那。

你们可以贡献的任何东西都将非常感激。干杯!

1 个答案:

答案 0 :(得分:3)

默认情况下,Mac上的Excel表示使用回车符的新记录,但bash正在使用换行符查找记录。在Excel for Mac中保存文件时,请务必将字符编码(保存文件时可用的选项)更改为DOS或Windows等,它们应该在回车符和换行符中弹出,并且应该“可读”。

或者,您可以使用tr处理文件,并将所有CR转换为LF,即

tr '\r' '\n' < myfile.csv > newfile.csv

您可以通过使用od检查文件来验证这是否真的存在问题。使用类似的东西:

od -c myfile.csv

寻找终结角色。

最后,您还可以调查bash的内部IFS变量,并将其设置为包含“\ _”。请参阅:http://tldp.org/LDP/abs/html/internalvariables.html